From 945599930a4af024e42dde3eef5f9950539b4d1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Fri, 10 Jan 2025 06:52:21 +0300 Subject: [PATCH 1/9] JSON+JSONB operators -> and ->> pushing down implementation + new SQLite err codes --- .github/workflows/CI.yml | 34 +- GitHubActions/build_postgis.sh | 17 +- GitHubActions/build_sqlite_fdw.sh | 13 +- GitHubActions/download_postgis.sh | 28 + GitHubActions/execute_test.sh | 4 +- GitHubActions/install_locales.sh | 3 +- GitHubActions/install_sqlite.sh | 32 +- Makefile | 34 +- README.md | 54 +- SQLite.png | Bin 0 -> 23007 bytes connection.c | 1 + deparse.c | 141 +- expected/13.15/extra/insert.out | 2 +- expected/13.15/extra/sqlite_fdw_post.out | 10 +- expected/13.15/gis_no/auto_import.out | 638 ++++ expected/13.15/gis_no/type.out | 537 +++ expected/13.15/gis_ok/auto_import.out | 638 ++++ .../13.15/{type_nogis.out => gis_ok/type.out} | 76 +- expected/13.15/libsqlite.out | 30 + expected/13.15/sqlite_fdw.out | 26 +- expected/13.15/type_postgis.out | 593 --- expected/13.15/types/bool.out | 2 +- expected/13.15/types/json.out | 3164 +++++++++++++++++ expected/13.15/types/macaddr.out | 2 +- expected/13.15/types/macaddr8.out | 2 +- expected/13.15/types/uuid.out | 2 +- expected/14.12/extra/insert.out | 2 +- expected/14.12/extra/sqlite_fdw_post.out | 10 +- expected/14.12/gis_no/auto_import.out | 638 ++++ expected/14.12/gis_no/type.out | 537 +++ expected/14.12/gis_ok/auto_import.out | 638 ++++ .../type_nogis.out => 14.12/gis_ok/type.out} | 76 +- expected/14.12/libsqlite.out | 30 + expected/14.12/sqlite_fdw.out | 26 +- expected/14.12/type_postgis.out | 593 --- expected/14.12/types/bool.out | 2 +- expected/14.12/types/json.out | 3164 +++++++++++++++++ expected/14.12/types/macaddr.out | 2 +- expected/14.12/types/macaddr8.out | 2 +- expected/14.12/types/uuid.out | 2 +- expected/15.7/extra/insert.out | 2 +- expected/15.7/extra/sqlite_fdw_post.out | 10 +- expected/15.7/gis_no/auto_import.out | 638 ++++ expected/15.7/gis_no/type.out | 537 +++ expected/15.7/gis_ok/auto_import.out | 638 ++++ .../type_nogis.out => 15.7/gis_ok/type.out} | 76 +- expected/15.7/libsqlite.out | 30 + expected/15.7/sqlite_fdw.out | 26 +- expected/15.7/type_postgis.out | 593 --- expected/15.7/types/bool.out | 2 +- expected/15.7/types/json.out | 3164 +++++++++++++++++ expected/15.7/types/macaddr.out | 2 +- expected/15.7/types/macaddr8.out | 2 +- expected/15.7/types/uuid.out | 2 +- expected/16.3/extra/insert.out | 2 +- expected/16.3/extra/sqlite_fdw_post.out | 10 +- expected/16.3/gis_no/auto_import.out | 638 ++++ expected/16.3/gis_no/type.out | 537 +++ expected/16.3/gis_ok/auto_import.out | 638 ++++ .../16.3/{type_nogis.out => gis_ok/type.out} | 76 +- expected/16.3/libsqlite.out | 30 + expected/16.3/sqlite_fdw.out | 26 +- expected/16.3/type_postgis.out | 593 --- expected/16.3/types/bool.out | 2 +- expected/16.3/types/json.out | 3164 +++++++++++++++++ expected/16.3/types/macaddr.out | 2 +- expected/16.3/types/macaddr8.out | 2 +- expected/16.3/types/uuid.out | 2 +- expected/17.0/extra/insert.out | 2 +- expected/17.0/extra/sqlite_fdw_post.out | 10 +- expected/17.0/gis_no/auto_import.out | 638 ++++ expected/17.0/gis_no/type.out | 537 +++ expected/17.0/gis_ok/auto_import.out | 638 ++++ expected/17.0/gis_ok/type.out | 539 +++ expected/17.0/libsqlite.out | 30 + expected/17.0/sqlite_fdw.out | 26 +- expected/17.0/type_nogis.out | 591 --- expected/17.0/type_postgis.out | 593 --- expected/17.0/types/bool.out | 2 +- expected/17.0/types/json.out | 3164 +++++++++++++++++ expected/17.0/types/macaddr.out | 2 +- expected/17.0/types/macaddr8.out | 2 +- expected/17.0/types/uuid.out | 2 +- sql/13.15/gis_no/auto_import.sql | 52 + sql/13.15/{type_nogis.sql => gis_no/type.sql} | 4 +- sql/13.15/gis_ok/auto_import.sql | 52 + .../gis_ok/type.sql} | 4 +- sql/13.15/libsqlite.sql | 17 + sql/13.15/types/json.sql | 1190 +++++++ sql/14.12/gis_no/auto_import.sql | 52 + sql/14.12/{type_nogis.sql => gis_no/type.sql} | 4 +- sql/14.12/gis_ok/auto_import.sql | 52 + .../gis_ok/type.sql} | 4 +- sql/14.12/libsqlite.sql | 17 + sql/14.12/types/json.sql | 1190 +++++++ sql/15.7/gis_no/auto_import.sql | 52 + sql/15.7/gis_no/type.sql | 286 ++ sql/15.7/gis_ok/auto_import.sql | 52 + .../type_postgis.sql => 15.7/gis_ok/type.sql} | 4 +- sql/15.7/libsqlite.sql | 17 + sql/15.7/type_nogis.sql | 284 -- sql/15.7/types/json.sql | 1190 +++++++ sql/16.3/gis_no/auto_import.sql | 52 + sql/16.3/gis_no/type.sql | 286 ++ sql/16.3/gis_ok/auto_import.sql | 52 + .../type_postgis.sql => 16.3/gis_ok/type.sql} | 4 +- sql/16.3/libsqlite.sql | 17 + sql/16.3/type_nogis.sql | 284 -- sql/16.3/types/json.sql | 1190 +++++++ sql/17.0/gis_no/auto_import.sql | 52 + sql/17.0/gis_no/type.sql | 286 ++ sql/17.0/gis_ok/auto_import.sql | 52 + sql/17.0/gis_ok/type.sql | 288 ++ sql/17.0/libsqlite.sql | 17 + sql/17.0/type_nogis.sql | 284 -- sql/17.0/type_postgis.sql | 286 -- sql/17.0/types/json.sql | 1190 +++++++ sql/init_data/init.sql | 16 + sqlite_fdw--1.0--1.1.sql | 16 + sqlite_fdw.c | 68 +- sqlite_query.c | 218 +- test.sh | 19 +- 122 files changed, 34019 insertions(+), 5206 deletions(-) create mode 100644 GitHubActions/download_postgis.sh create mode 100644 SQLite.png create mode 100644 expected/13.15/gis_no/auto_import.out create mode 100644 expected/13.15/gis_no/type.out create mode 100644 expected/13.15/gis_ok/auto_import.out rename expected/13.15/{type_nogis.out => gis_ok/type.out} (86%) create mode 100644 expected/13.15/libsqlite.out delete mode 100644 expected/13.15/type_postgis.out create mode 100644 expected/13.15/types/json.out create mode 100644 expected/14.12/gis_no/auto_import.out create mode 100644 expected/14.12/gis_no/type.out create mode 100644 expected/14.12/gis_ok/auto_import.out rename expected/{15.7/type_nogis.out => 14.12/gis_ok/type.out} (86%) create mode 100644 expected/14.12/libsqlite.out delete mode 100644 expected/14.12/type_postgis.out create mode 100644 expected/14.12/types/json.out create mode 100644 expected/15.7/gis_no/auto_import.out create mode 100644 expected/15.7/gis_no/type.out create mode 100644 expected/15.7/gis_ok/auto_import.out rename expected/{14.12/type_nogis.out => 15.7/gis_ok/type.out} (86%) create mode 100644 expected/15.7/libsqlite.out delete mode 100644 expected/15.7/type_postgis.out create mode 100644 expected/15.7/types/json.out create mode 100644 expected/16.3/gis_no/auto_import.out create mode 100644 expected/16.3/gis_no/type.out create mode 100644 expected/16.3/gis_ok/auto_import.out rename expected/16.3/{type_nogis.out => gis_ok/type.out} (86%) create mode 100644 expected/16.3/libsqlite.out delete mode 100644 expected/16.3/type_postgis.out create mode 100644 expected/16.3/types/json.out create mode 100644 expected/17.0/gis_no/auto_import.out create mode 100644 expected/17.0/gis_no/type.out create mode 100644 expected/17.0/gis_ok/auto_import.out create mode 100644 expected/17.0/gis_ok/type.out create mode 100644 expected/17.0/libsqlite.out delete mode 100644 expected/17.0/type_nogis.out delete mode 100644 expected/17.0/type_postgis.out create mode 100644 expected/17.0/types/json.out create mode 100644 sql/13.15/gis_no/auto_import.sql rename sql/13.15/{type_nogis.sql => gis_no/type.sql} (99%) create mode 100644 sql/13.15/gis_ok/auto_import.sql rename sql/{15.7/type_postgis.sql => 13.15/gis_ok/type.sql} (99%) create mode 100644 sql/13.15/libsqlite.sql create mode 100644 sql/13.15/types/json.sql create mode 100644 sql/14.12/gis_no/auto_import.sql rename sql/14.12/{type_nogis.sql => gis_no/type.sql} (99%) create mode 100644 sql/14.12/gis_ok/auto_import.sql rename sql/{13.15/type_postgis.sql => 14.12/gis_ok/type.sql} (99%) create mode 100644 sql/14.12/libsqlite.sql create mode 100644 sql/14.12/types/json.sql create mode 100644 sql/15.7/gis_no/auto_import.sql create mode 100644 sql/15.7/gis_no/type.sql create mode 100644 sql/15.7/gis_ok/auto_import.sql rename sql/{16.3/type_postgis.sql => 15.7/gis_ok/type.sql} (99%) create mode 100644 sql/15.7/libsqlite.sql delete mode 100644 sql/15.7/type_nogis.sql create mode 100644 sql/15.7/types/json.sql create mode 100644 sql/16.3/gis_no/auto_import.sql create mode 100644 sql/16.3/gis_no/type.sql create mode 100644 sql/16.3/gis_ok/auto_import.sql rename sql/{14.12/type_postgis.sql => 16.3/gis_ok/type.sql} (99%) create mode 100644 sql/16.3/libsqlite.sql delete mode 100644 sql/16.3/type_nogis.sql create mode 100644 sql/16.3/types/json.sql create mode 100644 sql/17.0/gis_no/auto_import.sql create mode 100644 sql/17.0/gis_no/type.sql create mode 100644 sql/17.0/gis_ok/auto_import.sql create mode 100644 sql/17.0/gis_ok/type.sql create mode 100644 sql/17.0/libsqlite.sql delete mode 100644 sql/17.0/type_nogis.sql delete mode 100644 sql/17.0/type_postgis.sql create mode 100644 sql/17.0/types/json.sql diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e2ff52ea..a8c0bb22 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -24,11 +24,12 @@ jobs: test: needs: detect-pgversion env: - SQLITE_VERSION : "3460000" - SQLITE_YEAR: "2024" + SQLITE_VERSION : "3490000" + SQLITE_YEAR: "2025" POSTGIS_VERSION : "3.4.2" HTTP_PROXY: "" HTTPS_PROXY: "" + SQLITE_FOR_TESTING_DIR: "/opt/CI_sqlite" strategy: fail-fast: false matrix: @@ -46,32 +47,38 @@ jobs: - name: set_proxy run: bash GitHubActions/env.sh + - name: download PostGIS, ${{ matrix.config }} mode + run: | + if [[ "${{ matrix.config }}" == "postgis" ]]; then + bash GitHubActions/download_postgis.sh ${{ env.POSTGIS_VERSION }} + fi + - name: install locales run: bash GitHubActions/install_locales.sh - - name: build PostgreSQL ${{ matrix.pg }} with ${{ matrix.config }} + - name: build PostgreSQL ${{ matrix.pg }} run: bash GitHubActions/build_postgres.sh ${{ matrix.pg }} - - name: build PostGIS ${{ env.POSTGIS_VERSION }} for PostgreSQL ${{ matrix.pg }}, ${{ matrix.config }} mode - run: | - if [[ "${{ matrix.config }}" == "postgis" ]]; then - bash GitHubActions/build_postgis.sh ${{ matrix.pg }} ${{ env.POSTGIS_VERSION }} - fi - - name: install SQLite, ${{ matrix.config }} mode run: | if [[ "${{ matrix.config }}" == "default" ]]; then - bash GitHubActions/install_sqlite.sh ${{ env.SQLITE_VERSION }} ${{ env.SQLITE_YEAR }} "${{ matrix.config }}" + bash GitHubActions/install_sqlite.sh ${{ env.SQLITE_VERSION }} ${{ env.SQLITE_YEAR }} ${{ matrix.config }} ${{ env.SQLITE_FOR_TESTING_DIR }} elif [[ "${{ matrix.config }}" == "postgis" ]]; then - bash GitHubActions/install_sqlite.sh ${{ env.SQLITE_VERSION }} ${{ env.SQLITE_YEAR }} "${{ matrix.config }}" --enable-rtree + bash GitHubActions/install_sqlite.sh ${{ env.SQLITE_VERSION }} ${{ env.SQLITE_YEAR }} ${{ matrix.config }} ${{ env.SQLITE_FOR_TESTING_DIR }} --enable-rtree + fi + + - name: build PostGIS ${{ env.POSTGIS_VERSION }} for PostgreSQL ${{ matrix.pg }}, ${{ matrix.config }} mode + run: | + if [[ "${{ matrix.config }}" == "postgis" ]]; then + bash GitHubActions/build_postgis.sh ${{ matrix.pg }} ${{ env.POSTGIS_VERSION }} fi - name: build sqlite_fdw, ${{ matrix.config }} mode run: | - bash GitHubActions/build_sqlite_fdw.sh ${{ matrix.pg }} ${{ matrix.config }} + bash GitHubActions/build_sqlite_fdw.sh ${{ matrix.pg }} ${{ matrix.config }} ${{ env.SQLITE_FOR_TESTING_DIR }} - name: execute sqlite_fdw test - run: bash GitHubActions/execute_test.sh ${{ matrix.pg }} ${{ matrix.config }} + run: bash GitHubActions/execute_test.sh ${{ matrix.pg }} ${{ matrix.config }} ${{ env.SQLITE_FOR_TESTING_DIR }} - name: download output files (regression.diffs) if: failure() @@ -83,3 +90,4 @@ jobs: workdir/postgresql-${{ matrix.pg }}/contrib/sqlite_fdw/regression.out workdir/postgresql-${{ matrix.pg }}/contrib/sqlite_fdw/results retention-days: 7 + diff --git a/GitHubActions/build_postgis.sh b/GitHubActions/build_postgis.sh index b51ee6c1..8057a334 100644 --- a/GitHubActions/build_postgis.sh +++ b/GitHubActions/build_postgis.sh @@ -2,7 +2,7 @@ ################################################################################ # -# This script downloads PostgreSQL from the official web site into ./workdir +# This script downloads PostGIS from the official web site into ./workdir # then builds it. # # Usage: ./build_postgis.sh pg_version postgis_version @@ -17,23 +17,18 @@ POSTGRESQL_VERSION=$1 POSTGIS_VERSION=$2 -cd ./workdir -cd postgresql-${POSTGRESQL_VERSION} - # Install necessary dependencies sudo apt update sudo apt install -y build-essential libxml2-dev libgeos-dev libproj-dev libgdal-dev libjson-c-dev libprotobuf-c-dev protobuf-c-compiler -GEOS_CONFIG_PATH=$(which geos-config) - +cd ./workdir # Download and compile PostGIS -cd contrib -wget http://download.osgeo.org/postgis/source/postgis-${POSTGIS_VERSION}.tar.gz -tar -xzf postgis-${POSTGIS_VERSION}.tar.gz -mv postgis-${POSTGIS_VERSION} postgis -v -cd postgis +cp -vr postgis postgresql-${POSTGRESQL_VERSION}/contrib +cd postgresql-${POSTGRESQL_VERSION}/contrib/postgis echo " - PostGIS directory" +GEOS_CONFIG_PATH=$(which geos-config) export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH ./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=$GEOS_CONFIG_PATH make sudo make install + diff --git a/GitHubActions/build_sqlite_fdw.sh b/GitHubActions/build_sqlite_fdw.sh index 1f11cfe6..61ac8a6b 100644 --- a/GitHubActions/build_sqlite_fdw.sh +++ b/GitHubActions/build_sqlite_fdw.sh @@ -4,9 +4,10 @@ # # This script builds sqlite_fdw in PostgreSQL source tree. # -# Usage: ./build_sqlite_fdw.sh pg_version mode +# Usage: ./build_sqlite_fdw.sh pg_version mode sqlite_for_testing_dir # pg_version is a PostgreSQL version like 17.0 to be built in. # mode is flag for sqlite_fdw compiler. +# sqlite_for_testing_dir: path to install directory of SQLite version for testing # # Requirements # - the source code of sqlite_fdw is available by git clone. @@ -18,14 +19,16 @@ VERSION="$1" MODE="$2" mkdir -p ./workdir/postgresql-${VERSION}/contrib/sqlite_fdw -tar zxvf ./sqlite_fdw.tar.gz -C ./workdir/postgresql-${VERSION}/contrib/sqlite_fdw/ +tar zxf ./sqlite_fdw.tar.gz -C ./workdir/postgresql-${VERSION}/contrib/sqlite_fdw/ cd ./workdir/postgresql-${VERSION}/contrib/sqlite_fdw -export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH + +# show locally compiled sqlite library +ls -la /usr/local/lib if [ "$MODE" == "postgis" ]; then - make ENABLE_GIS=1 + make ENABLE_GIS=1 SQLITE_FOR_TESTING_DIR="$3" else - make + make SQLITE_FOR_TESTING_DIR="$3" fi sudo make install diff --git a/GitHubActions/download_postgis.sh b/GitHubActions/download_postgis.sh new file mode 100644 index 00000000..bc72a209 --- /dev/null +++ b/GitHubActions/download_postgis.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +################################################################################ +# +# This script downloads PostGIS from the official web site into ./workdir +# then builds it. +# +# Usage: ./download_postgis.sh postgis_version +# postgis_version is a PostGIS version to be installed. +# +# Requirements +# - be able to connect to the PostGIS official web site by wget. +# +################################################################################ + +POSTGIS_VERSION=$1 + +mkdir -p ./workdir +cd ./workdir +pgisfile="postgis-${POSTGIS_VERSION}.tar.gz" +if [ ! -f "$pgisfile" ]; then + wget -nv "http://download.osgeo.org/postgis/source/$pgisfile" + tar -xzf "$pgisfile" + mv postgis-${POSTGIS_VERSION} postgis -v + echo "PostGIS source code directory " $(dirname $(readlink -f postgis)) +else + echo "PostGIS downloaded" +fi diff --git a/GitHubActions/execute_test.sh b/GitHubActions/execute_test.sh index c46f0117..98742d61 100644 --- a/GitHubActions/execute_test.sh +++ b/GitHubActions/execute_test.sh @@ -6,9 +6,10 @@ # sqlite_fdw. If all tests are passed, this script will exit successfully. # Otherwise, it will exit with failure. -# Usage: ./execute_test.sh pg_version mode +# Usage: ./execute_test.sh pg_version mode sqlite_for_testing_dir # pg_version is a PostgreSQL version to be tested like 17.0. # mode is flag for sqlite_fdw compiler. +# sqlite_for_testing_dir: path to install directory of SQLite version for testing # # Requiremets # - the source code of PostgreSQL is located in ./workdir/postgresql-{pg_version}. @@ -22,6 +23,7 @@ VERSION=$1 MODE="$2" +SQLITE_FOR_TESTING_DIR="$3" cd ./workdir/postgresql-${VERSION}/contrib/sqlite_fdw diff --git a/GitHubActions/install_locales.sh b/GitHubActions/install_locales.sh index b5a7da07..0216365e 100644 --- a/GitHubActions/install_locales.sh +++ b/GitHubActions/install_locales.sh @@ -17,5 +17,6 @@ sudo apt-get install locales language-pack-ja sudo locale-gen ja_JP.EUC-JP sudo apt-get install language-pack-ko-base language-pack-ko sudo locale-gen ko_KR.EUC-KR -sudo apt -get install language-pack-bg-base language-pack-bg +sudo apt-get install language-pack-bg-base language-pack-bg sudo locale-gen bg_BG +sudo apt-get install libreadline8 libreadline-dev diff --git a/GitHubActions/install_sqlite.sh b/GitHubActions/install_sqlite.sh index c659d7d8..7ff788f5 100644 --- a/GitHubActions/install_sqlite.sh +++ b/GitHubActions/install_sqlite.sh @@ -5,13 +5,14 @@ # This sript downloads SQLite source code from the official web site into # ./workdir then builds and installs it. # -# Usage: ./install_sqlite.sh version year testing_mode [configure_options] +# Usage: ./install_sqlite.sh version year testing_mode sqlite_for_testing_dir [configure_options] # version: SQLite version to be installed. # year: A year of SQLite released. It is used for determining a download URL. # testing_mode: 'default' or 'postgis' value. +# sqlite_for_testing_dir: path to install directory of the specified SQLite version # configure_options: are a list of option for sqlite server. # -# Ex) ./install_sqlite.sh 3420000 2023 postgis --enable-rtree +# Ex) ./install_sqlite.sh 3420000 2023 postgis /opt/sqlite_for_testing --enable-rtree # # Requirements # - be able to connect to the SQLite official web site by curl. @@ -22,27 +23,36 @@ VERSION="$1" YEAR="$2" TESTING_MODE="$3" +SQLITE_FOR_TESTING_DIR="$4" CONFIGURE_OPTIONS="" while (( "$#" )); do - CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $4" + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $5" shift done +echo "SQLite ver $VERSION ($YEAR), mode $TESTING_MODE, install to $SQLITE_FOR_TESTING_DIR with options $CONFIGURE_OPTIONS"; + mkdir -p ./workdir cd ./workdir -curl -O https://www.sqlite.org/${YEAR}/sqlite-src-${VERSION}.zip -unzip sqlite-src-${VERSION}.zip > /dev/null -cd sqlite-src-${VERSION} - -if [ -z "$CONFIGURE_OPTIONS" ]; then - ./configure --enable-fts5 -else - ./configure --enable-fts5 $CONFIGURE_OPTIONS +vsrc="sqlite-src-${VERSION}" +adr="https://www.sqlite.org/${YEAR}/$vsrc.zip" +echo "SQLite source code archive: $adr" +curl -O "$adr" +unzip "$vsrc.zip" > /dev/null +cd "$vsrc" + +export CFLAGS=-DSQLITE_ENABLE_COLUMN_METADATA +confcom="./configure --enable-fts5 --prefix=$SQLITE_FOR_TESTING_DIR" +if [ ! -z "$CONFIGURE_OPTIONS" ]; then + confcom+="$CONFIGURE_OPTIONS" fi +echo "SQLite configure call: $confcom" +$confcom make +echo "----- SQLITE INSTALL directory $SQLITE_FOR_TESTING_DIR -----" sudo make install if [ "$TESTING_MODE" == "postgis" ]; then diff --git a/Makefile b/Makefile index 54d8463e..1b0b3c32 100644 --- a/Makefile +++ b/Makefile @@ -16,20 +16,27 @@ EXTENSION = sqlite_fdw DATA = sqlite_fdw--1.0.sql sqlite_fdw--1.0--1.1.sql ifdef ENABLE_GIS -override PG_CFLAGS += -DSQLITE_FDW_GIS_ENABLE -GISTEST=postgis +PG_CFLAGS += -DSQLITE_FDW_GIS_ENABLE +GISTEST = postgis +GISPREF = ok else -GISTEST=nogis +GISTEST = nogis +GISPREF = no endif +# Tests for PostgreSQL data types support +TYPETESTS = types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/json types/numeric types/$(GISTEST) types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid +# Tests with different versions with GIS support and without GIS support +GISDEPTESTS = gis_$(GISPREF)/type gis_$(GISPREF)/auto_import + ifndef REGRESS -REGRESS = extra/sqlite_fdw_post types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/numeric types/$(GISTEST) types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw type_$(GISTEST) aggregate selectfunc +# System tests, full default sequence +REGRESS = libsqlite extra/sqlite_fdw_post $(TYPETESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GISDEPTESTS) endif +# Other encodings also are tested. Client encoding should be UTF-8- REGRESS_OPTS = --encoding=utf8 -SQLITE_LIB = sqlite3 - UNAME = uname OS := $(shell $(UNAME)) ifeq ($(OS), Darwin) @@ -38,7 +45,12 @@ else DLSUFFIX = .so endif +ifdef SQLITE_FOR_TESTING_DIR +SHLIB_LINK := -L$(SQLITE_FOR_TESTING_DIR)/lib -lsqlite3 +PG_CFLAGS += -I$(SQLITE_FOR_TESTING_DIR)/include -Wl,-rpath,$(SQLITE_FOR_TESTING_DIR)/lib +else SHLIB_LINK := -lsqlite3 +endif ifdef ENABLE_GIS override SHLIB_LINK += -lspatialite @@ -70,9 +82,19 @@ endif REGRESS := $(addprefix $(REGRESS_PREFIX_SUB)/,$(REGRESS)) $(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/extra) $(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/types) +$(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/gis_$(GISPREF)) + +# $(info ENABLE_GIS is $(ENABLE_GIS)) + $(info SHLIB_LINK is $(SHLIB_LINK)) +# $(info LD_LIBRARY_PATH is $(LD_LIBRARY_PATH)) + $(info PG_CFLAGS is $(PG_CFLAGS)) + $(info PG_CPPFLAGS is $(PG_CPPFLAGS)) +# $(info REGRESS is $(REGRESS)) +# $(info DLSUFFIX is $(DLSUFFIX)) ifdef ENABLE_GIS check: temp-install temp-install: EXTRA_INSTALL+=contrib/postgis checkprep: EXTRA_INSTALL+=contrib/postgis endif + diff --git a/README.md b/README.md index b6ac0ee9..c1f6dd2b 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ SQLite Foreign Data Wrapper for PostgreSQL ========================================== This is a foreign data wrapper (FDW) to connect [PostgreSQL](https://www.postgresql.org/) -to [SQLite](https://sqlite.org/) database file. This FDW works with PostgreSQL 13, 14, 15, 16, 17 and confirmed with SQLite 3.46.0. +to [SQLite](https://sqlite.org/) database file. This FDW works with PostgreSQL 13, 14, 15, 16, 17 and confirmed with SQLite 3.49.0. -PostgreSQL + SQLite +PostgreSQL + SQLite Also this foreign data wrapper (FDW) can connect PostgreSQL with [PostGIS](https://www.postgis.net/) to [SpatiaLite](https://www.gaia-gis.it/fossil/libspatialite/index) SQLite database file. This FDW works with PostGIS 2+ and confirmed with SpatiaLite 5.1. See [GIS support description](GIS.md). @@ -48,7 +48,8 @@ Features - `bool`: `text`(1..5) and `int`, - `double precision`, `float` and `numeric`: `real` values and special values with `text` affinity (`+Infinity`, `-Infinity`, `NaN`), - `macaddr`: `text`(12..17) or `blob`(6) or `integer`, - - `macaddr8`: `text`(16..23) or `blob`(8) or `integer`. + - `macaddr8`: `text`(16..23) or `blob`(8) or `integer`, + - `json`: `text`(default) or `blob` as SQLite `jsonb` object. - Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) output (`INSERT`/`UPDATE`) for such data types as - `timestamp`: `text`(default) or `int`, - `uuid`: `text`(36) or `blob`(16)(default), @@ -66,12 +67,13 @@ Features - `LIMIT` and `OFFSET` are pushdowned when all tables in the query are foreign tables belongs to the same PostgreSQL `FOREIGN SERVER` object. - Support `GROUP BY`, `HAVING` push-down. - `mod()` is pushdowned. In PostgreSQL this function gives [argument-dependend data type](https://www.postgresql.org/docs/current/functions-math.html), but result from SQLite always [have `real` affinity](https://www.sqlite.org/lang_mathfunc.html#mod). -- `=` operator for GIS data objects are pushdowned. +- `=` operator for GIS data objects is pushed down. +- Operators `->` and `->>` for `json` and `jsonb` are pushed down in `WHERE` clause. - `upper`, `lower` and other character case functions are **not** pushed down because they does not work with UNICODE character in SQLite. - `WITH TIES` option is **not** pushed down. - Bit string `#` (XOR) operator is **not** pushed down because there is no equal SQLite operator. - Operations with `macaddr` or `macaddr8` data are **not** pushed down. -- Operators for GIS data objects are **not** pushdowned except for `=`. +- GIS data oparators are **not** pushdowned except for `=`. ### Notes about pushing down @@ -86,6 +88,8 @@ Features - `sqlite_fdw` can return implementation-dependent order for column if the column is not specified in `ORDER BY` clause. - When the column type is `varchar array`, if the string is shorter than the declared length, values of type character will be space-padded; values of type `character varying` will simply store the shorter string. - [String literals for `boolean`](https://www.postgresql.org/docs/current/datatype-boolean.html) (`t`, `f`, `y`, `n`, `yes`, `no`, `on`, `off` etc. case insensitive) can be readed and filtred but cannot writed, because SQLite documentation recommends only `int` affinity values (`0` or `1`) for boolean data and usually text boolean data belongs to legacy datasets. +- Directry for SQLite foreign table you can use SQLite specific extractor operand for `->` or `->>` like `$.a.d[1]` in `WHERE` clause, but PostgreSQL will calculate result of equal expression in `SELECT` clause as `NULL`. +- If you will use unsupported by `sqlite_fdw` older SQLite versions from your OS, please note SQLite JSON processnig behaviour was unstable between 3.45.0 and 3.48.0 especially for negative array indexes. Please note this for explaining any unexpected results after `->` or `->>` operators or failed tests on your OS. Also see [Limitations](#limitations) @@ -233,7 +237,7 @@ This table represents `sqlite_fdw` behaviour if in PostgreSQL foreign table colu * **∅** - no support (runtime error) * **✔** - 1↔1, PostgreSQL datatype is equal to SQLite affinity * **✔-** - PostgreSQL datatype is equal to SQLite affinity, but possible out of range error -* **V** - transparent transformation if possible +* **V** - transparent transformation * **V+** - transparent transformation if possible * **i** - ISO:SQL transformation for some special constants * **?** - not described/not tested @@ -248,7 +252,7 @@ SQLite `NULL` affinity always can be transparent converted for a nullable column | bool | V | ∅ | T | i | ∅ | INT | | bit(n) | V
(n<=64) | ∅ | ∅ | ∅ | ∅ | INT | | bytea | ∅ | ∅ | ✔ | V | ? | BLOB | -| char(n) | ? | ? | T | ✔ | V | TEXT | +| char(n) | ? | ? | T | ✔- | V | TEXT | | date | V | V | T | V+ | `NULL` | ? | | float4 | V+ | ✔ | ∅ | i | `NULL` | REAL | | float8 | V+ | ✔ | ∅ | i | `NULL` | REAL | @@ -257,17 +261,18 @@ SQLite `NULL` affinity always can be transparent converted for a nullable column | int2 | ✔- | ? | ∅ | ∅ | `NULL` | INT | | int4 | ✔- | ? | ∅ | ∅ | `NULL` | INT | | int8 | ✔ | ? | ∅ | ∅ | `NULL` | INT | -| json | ? | ? | T | V+ | ? | TEXT | +| json | ∅ | ∅ | V+ | V+ | ∅ | TEXT | +| jsonb | ∅ | ∅ | V+ | V+ | ∅ | BLOB | | macaddr | ✔- | ∅ | V
(Len=6b)| V+ | ? | INT | | macaddr8 | ✔ | ∅ | V
(Len=8b)| V+ | ? | INT | -| name | ? | ? | T | i | `NULL` | TEXT | +| name | ? | ? | T | ✔- | `NULL` | TEXT | | numeric | V | V | T | i | `NULL` | REAL | | text | ? | ? | T | ✔ | V | TEXT | | time | V | V | T | V+ | `NULL` | ? | | timestamp | V | V | T | V+ | `NULL` | ? | |timestamp + tz| V | V | T | V+ | `NULL` | ? | | uuid | ∅ | ∅ |V+
(Len=16b)| V+ | ∅ | TEXT, BLOB | -| varchar(n) | ? | ? | T | ✔ | V | TEXT | +| varchar(n) | ? | ? | T | ✔- | V | TEXT | | varbit(n) | V
(n<=64) | ∅ | ∅ | ∅ | ∅ | INT | @@ -304,6 +309,8 @@ SQLite `NULL` affinity always can be transparent converted for a nullable column | macaddr8 | macaddr8 | | [geometry](GIS.md) | geometry | | [geography](GIS.md) | geography | +| json | json | +| jsonb | jsonb | **Note:** In case of `sqlite_fdw` compiling without GIS support, GIS data types will be converted to `bytea`. @@ -634,6 +641,33 @@ for `INSERT` and `UPDATE` commands. PostgreSQL supports both `blob` and `text` [ - `sqlite_fdw` PostgreSQL `macaddr`/`macaddr8` values support based on `int` SQLite data affinity, because there is no per bit operations for SQLite `blob` affinity data. For `macaddr` out of range error is possible because this type is 6 bytes length, but SQLite `int` can store value up to 8 bytes. - `sqlite_fdw` doesn't pushdown any operations with MAC adresses because there is 3 possible affinities for it in SQLite: `integer`, `blob` and `text`. +### JSON support and operators +- Operators `->` and `->>` for `json` and `jsonb` are pushed down. This means if you deal with a foreign table only, you can use SQLite syntax of `->` and `->>` operators which is more rich than PostgreSQL syntax. In PostgreSQL this operators means only 1-leveled extraction after one call, but possible multilevel extraction in one call of the operator in SQLite. You can extract `'{"a": 2, "c": [4, 5, {"f": 7}]}' ->'c' -> 2` with result `{"f":7}` both for PostgreSQL and SQLite tables, but `'{"a": 2, "c": [4, 5, {"f": 7}]}' ->'$.c[2]'` possible only in SQLite and for a foreign table. +- For PostgreSQL numeric argument of `->` and `->>` operators means only coordinate inside of array. In SQLite transformable to number text argument of this operators also can extract array element. PostgreSQL differs `json -> (2::text)` and `json -> 2`, but SQLite not: `json -> '2'`. +- Please note you can turn off processing of normalizing possible SQLite `jsonb` values with `blob` affinity for a column with formal SQLite `json` data type as option `column_type` = `text`. This can increase `SELECT` or `ORDER` speed, because there will be no normalize function wrapping, but in this case any query will have unsuccessfully result in case of any value with `blob` affiniy including any possible SQLite `jsonb` value. +```sql +-- a query with normalization - standard ISO:SQL behaviour +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSON" +(3 rows) + +-- turn off normalization +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) +``` + Tests ----- Test directory have structure as following: diff --git a/SQLite.png b/SQLite.png new file mode 100644 index 0000000000000000000000000000000000000000..c09f757d4ccd5eb43700628fb09f6687083f966c GIT binary patch literal 23007 zcmV)8K*qm`P)EX>4Tx04R}tkv&MmP!xqvQ$^8=gB?UVWT;MdQ4w*fRVYG*P%E_RVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`yWphgA|>9J6k5c1;qgAsyXWxUeSpxYFwN?U1DbA| z>10C8=2pd?R|F72KV}h=nPtpLQVPEHbx++?cQKyj-}h$?sCkP40g*V)4AUmwAfDc| z4bJ<-VOEk=;&bA0lP*a7$aTfzH_kz@3Dp}fAb%yn83B(aDkND!f*hB7L!5u;rv#X_3S6F&YC*DsMvAy*lU z91EyIgY5dj|KRs*t-|DlmlR3>-7k*wF$(nT0?oSPd>=bb^8^S!16O+6Uu^(0pQP8@ zTJ#7Q+y*YL+nTZmTR2oE7 z5=B}QOI#dGTNp`I15#TWQd}iVSSL|iEJ;uTMq&y@V*yEG3QS}JMQQ;{Y70(j3PfrW zO=1{LWCT%U3{qtTQELlRYY$p&6;x;dO>zWDbpldz091PjSa%g#btzY7G+SpURcSV5 zav5TGMrwCXZ+K{Sc>-F53|fW+Vu~1Mhz4nx8g!f!ZkaQ3j3RWMD0Y-Gb&@xGnkaFL z3U{a#cB&Y8sttU!1AV;>ez^p9wi11`6MniIeX;^?rz3TuC3>VOdZsmfqD**%R(XX> zf01Q=h5>%V0e;B|eZl~K&;^0L3WB}}g0&QayBUPH6ojxPiMTb1useaCR)msfiI;4S zmrj$icblbWm!^25tyrSJ0)oW}gu?}i#R7%O3Wdr8i_8j(%nOOd7K+9OksyK#w(M^B$mk| zo75|u)hC_yr{G+(Y{m3s z!}N!$wUxHLi>k7ap{AI*#e=@phrig0x5uKr$c4h$g~8UE#?q(8%c#oLw$<9Q&DMd& z>xIegh|24S%<+rP@q)+ki_!Ci)clFl`-jx`lGOK=&g!|@S@|HRzo$K>kC>h#p?^~w4E)&Kw8{{PwZ`qt>``1S4N{{QCo`s?oRBByEN z00001bW%=J06^y0W&i*H0b)x>L;#2d9Y_EG010qNS#tmY3ljhU3ljkVnw%H_000Mc zNliru=>Z%II~E=Tl=T1r02y>eSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{ z03ZNKL_t(|+U>o0d{ou>KORCt5+s@2xtWka0Pid}2_Z48qQwtIw6qmr*osy^pP6C8 zS{H0*?ksE)5>~B(?AQ-mNRXfeoInCd)VA8%R9marCTv=3`>9Jm_V@dJ|NTDCbI!T< zP6%RM=<8Q{X6D{=&o<}%JkNQ~bC!E=QqsTOzumvx{}0?J?=JnX2OhZNjt3uE`tA(@ z_~X~cr=||f$jHm?+jsEb!M8sAhtK}S5x+5EVBd`4w^=RL;Ui>=Y|G5f8~&ev_*a(c zKa3yRH#=WWOH&j{l4M6onNzkTXWaIm|EjG1-*+GE(>FIKN0J<+lB&w8!y$v;>6E1G z@&B6b`je$uDTA|fWZB^Ww8F`mfuLx*N&XCq{Xqm&~qkYxqFiZyju zzt{iel=UNnQv0T4mtz}tl%P}thq<%La!zqdYSyp+r4aw0zdx9lk)NG2!ot|hgc=>5 z6sv5PtmP>K-}qO;{CZYO`S4_=%wmxRXo=9m$1Y0_(Bh?O6Ak zv6KO02`wU56u``!I$Cn6`TfWL^{8W{V^quV z)P8sT{d2my*5@Dn{&&9fo$q~zyYF4g-SfTgL2BdrJN#n`_};Zk`QFvifA=2v;8(bN z?z#tppkm(|Q2|QdB$@xm1X?4!WxH{`5~r?wT`u;hgEy?_D^n zcQKq#rfQ*NGgZ$g?-#ur>O!v&0?h2@G1-f7bJA?E4E8G7UP4w z27bTK17%L1I`!U(V^kMfT8;$H$^y7xbdHr_w&kV1b0y^Ge|Yz_*}hH7m(QLtea7q= zGp1KepAJ6!;;&*lgw2>=v0zrk?26g5=VLI%;b}H`AqV?mP{o1;3o77)0kcKyjM>wH z2($2uk+WwksF*RI%9*|Zilz)$;OrT*AbADUpaL)FPoF=dVg~ciT)tq|f`!v2jRZEU zOiOc+lFn&I3A={AN|tOS@N!O;rA)>k)r@S z_i&WXe9fH^&q{)#pXeF?RKj(Sd`~?oiht^E}l3*RZCTdm8oiumNjS+c?J7t z(Zc1tyws0+V1Dkd**>o)?3=mu;4gpv>eb!Pdz`PHkh`lyzw!#Cc;)9<&Uv2U6--U( zU(u7D7qPFhbmt-C|6FLiYcz7X6q>Hg8?)>%H)&moIhgD#s$@^g?O}pGf9FD9sLC^Q z^)G+^%K88KpYyN0{7Ucc)!xId2!8ea`SVocp1ID$_xvm8+4)uUzKZ@=C_OlHA?Njs zl%D7QpL6$1>7!`~RZ`&4nQS_f0SY>sS~y}>RYgh88~=$J@^8L--*m6n7yj8V;eRi} zKVP_Tp1F(q0ge~XU$}Ta!Chdf&tJSKQuS~b&1sqIX1{Ly6DaQjIgAHC94>IzO~;GE z4}Sp{7=P|ZrC@8Y4%uL_WMVLH<%&>himIrEN^+`s*5v)~+`n*UcxL#QufE)U@#4ky z?ru1BUhKqE_r-2>=r&SR9&icMVR(1fg|7IeOBisetNYQk0Yw&l0Hv5DT0sL83^U20S|k@-sS06MRhL7R zaxzU?>~GJ1ciNm8zU43c;`~MY<1Y52KP10_i9#t_gj^Ca@a;5(cl9`%OF%GPm-q)A zI|HiAc)Cmx-FR(;lc%e#>++-H6tF9u3~>SJWB@L(E4QSS+rbu*ZYh+2^-k=q9g54P zmH_4n2IfCanFd|R{M|pl(0S?dl|GISFbBV42> zc$|vpu=LZ?!A&p1T_$PQ@n zDj1@!QrTu3YH04~@1E}S&3yWo=es&Ci$68$h_0i%!+go(E+?ev>d=9h!Y`ZPai)^L zn<1hiF7vQXkxux#7u1h&wtA*6b%%R zeu`z+=)H*Et_xJWph^d{>-eK-N~tWV4ojKnfQ4=rR#^JDG{ydtpOh;Sj3*r^3KC*g z6c~f`y+ar6xxP*F=KbvF=R3MDzVgaN`d_S4cRQ~MC~&C41*#KV34(yXU4(ZN=MW5C zwRd%NGECf2R43zVH!CNu$B5%aBRvnffTs)OX^+RdIv)MD0+xsZEmUQYId6@A*&*4> zmGAuta617qVlI%ab}J~gk^)QCFoF3ebLY*gn)l0JT)fnA@%+mdiK-W{ju-JvNZMI- zh(}0(3ydki4^ssx7q52vMfArx#4Zku@fI>)=)Az8;33ZZ$mP!SB9N8CqPor_*Sou( z8{5Cs<$&?96S^aWjM`de^STb!v?aSW?Xf?XD}@$ClKAA971->OOKh2gZxWdAo8$H@ zTky)uo$c_a?VauI?NC`DYF9@bXv^Sqbar+iTiY2!Iyx`5bX@G{?(ArRlqBMq4G*1I zOlLb|V@Dii9}XQ9gvDTju1;za7!zm6=m_ET_w8{i2QMI9Tj!+gp{Ip+fvyy;NXE;*ez`In#1e z-{Ug{Q|1KR%NM`W&i)<$INrf(6h}S~Z@Y*+#Jz4N(jA>G7ZEq-7n5HB8mkXUI~aJR z1{6x1jx#ZcQy#dy%o_($hVeh%B~$?f#X-llb-^hff3zr_=K1){fN4+xm?cHB7N-L>(0^D*?F?*cy0|LM!^z|VL`8%P!ibq5~0h}j@*9Uyn` z?I6i*@9bpEzSz`pLKfs#BIsV%|5yXo*e23kg7rQYfB!k55Cf5}= zD&LN@z|0+t8W;<-WPcGSG8(BnJB)lp_>Q)=&d#=uOQ-KihtUzrHcj~Hy%QTZ0jtNQ z+?G82_CNpa_8d!^GrbhX6(rlB;mIloO<=KQaiiqJxxi=lPf50^;vG~Ygb%;C&?$x^ zUDwjlaS?>Or4#v#t)R2LlT(H9wLOtzaZya1{(%Iks{@(a(bi#NFA$!!YnHmL{ZboK zG2btA6{bmL5~*pUbCOuo2CiC)(^4jUob*_7jt%T_A=`Lx%8W#o%#_y{<`1S!_XK7> z@yf-QLB!gKv51yXgG|vMCqiy->4eY4iyeqthy>>^!`qR-^eY@9X3Zxa?==B7dG5N~ z+B;8ocm8CQ;!-V&Q#U{KaU&ZaJJO4aGj981(i?f@DaC~jlx?0$McI}KdTuH=#QuE$ ztU$#7)0bPYQ31`{S%uiAmpVahKzVgQVT7smqzwBff6Nzz7|>#dHKjuz~q0W(Y1fhQkJ=fON-q!tn7gt=eKH0@tZIN#& zO#{B#%lrN|De1wRvaL2n;`SLkNPLv7N`q3~5$$<)AmnD4+qmmsh~sgNm}*I6XamF@ zEw2J#zzaI8g^?yshd82OrF4jr+IhZ?4u+3KAeuJzk31!&inkm8-oYczb)P$W3C7H1 zSaSp0XwujTK`WOPyEO$MznMDJ3igSDv%F&Y-G#E?gfW)IsrOZY*&A~I^ko43vJRTL z)*jakGlE6YZUN{mEk+C>PH?AnG$t1}(wjB$1f=Oe@PCEHK|c+Y5U8<@lL+Pl)keF}Jk5g?#RK^(_!_ zQ)OFCc)pM`V}8rdjU_li^*M-mD=dQuS)~iLF zNg#6j^MJugcBI0aw4!s_F*?m@$sN*fJXq4dPtC|ER3ue5R8+n$3pq76#GJ6pyUxzfs@;y8*(oWTa=p2P4#LqxpRQMxwY+VTPwC? z{KaFursog^GWy)P)|S(R@f;NO))^@2C~N0&{EHYC2#MfyriEy6?hKOc4AucJTUs7X zhd#>5COH-Ar5v(hZA&8ytyx*v?>^GMxX3jCAv;ZEQL#D5PO?e*-kM~zXYb4>UwWwx zK(`QP0tk$Y$78Kn1HmDLX@dOLInKlQ*|sJ)HGvXqMSPU@%(-(%0VlvYZBR`x8H*=L ziepQ`ROjIT5GF>Q;c4Ci@o9N}oGVQ&O=I)AifKKLxzS46pguVN@ovAN)*`i#3AAb5 zPLXh{1&+GQGsQf~`}a=|2YgSwd=7;BC9Fyu84w3X17gOy7)d%Hinlg%b#2IYD~4kd zN`cZ18L{(dwTFxCkch1D^);P&C=845bk41!N#jJ!0Fp~%~Y^*2eRMOiD{&6dh zjKK%UA8&%IN5@GHNm6BDW^zkIQTWaRMaiR?fL{;HwsUh_XR*W~v*pViTh>y8&r$CT zhMCyh948Ya79#_rHAaE4R-#2K$l^JM84l;54aSgNZP=ozdj?v;B>+Z-wZ@xUF%1gs zX=)f}TH-`egcT!2kEKvJBOVGA6oA}r?gGq5za?3mk|dVVWrxapDkp`MIMU1eeb^3p(t~nU`LA>CD+ytZyr$Io6)RX7y|XdH~e7 zkT1|&&%y6Z9D&7S6pKO|qvk*wkTO6rM0^@fNUYOT7?g`rfMU+V&zwWr0iiKJHmw-^ zRdZ|e(I0||4Wk67ZcIvIIsl{_=dXvSqA~K>!?-O@DzV6>Z3hyjciK^L5xil4r8w(TtTI{=~i3^-&0L(mqZ_6;#_LL6}A+%KS_m}Xe)G&3YX9*# zJ3vmP5jIImbf)dhnbRyotd;SY+BEnm4pKmHjL6p7){Mk}_I$MMt)Gl#9kJ8gMNy9h zO&Yo-mv!KH+$i#Pzue*xidLOzp8GK#UelgNl>L z(cDaD)c>d3eyEf>by1ZZJ)9&-8U5Zw5VxmVaU-u}F(!|2gN@K(Y&4RsPjA0Jg=G8G zOJ@P{Ss?ElXQ+yZltea03LBd(h6CWEN6(!-i;P1Ms9mw1+^XZ?AV{KP83~VO1)C=1ssc1NJ?H{sNH+PIW6jl>^_x0c^d zt55xgr#XupB@&3XEGvc*!?vw5#Vt9lx%zU|hjV8ILNkHSpv2&hn$I-9Ng%)jUy^Z9 zCUGJ}Gx8rykk+;)tmjz*4dHLnkq$^6#(5To`k)C+7LlIy_#pM5m<3+CID59al^Qik z0qL@z*kvV=YclJwKzYe!O4{&@;WTJ?FxP@Z#{$`A;xk*17WTHRSgfhWg8P&i-T+_* zaee7*Gm0x~pxlumLab~i7{KpXa}&crjArRso@SJB6bsf4(8W;qH?=jNVTqfOhbReH zBr5=f9xqy(+VpnB==S`bYMNN6P-wS=XQ>KCi5)^l3{Lh zd)t~fUdQ~w6yh_q<+Ep+kAoAD`C8wpt(R1>PkDg)7oH>wf9GH+Y-05q*4or`ni$)B8ueT&sb|axp{H3C6xl@TBi2gd4X4{cPsw6NMDKqP zHkc?iWaGd6paVr=uv76UuA+Jjz*orgb4Kts;Ava)#zdhZ2THrg=13Wsy z18i$*!Uot(HRdXe17}C%wa9~zfkMDVNPMRGEcW_mQCBv{y9gvo7B=oH$_1FUb zbHKO(vZOCA%cglw663*q-)g_SacQ_xBiUqgW9Fs_Gg6(h#hLrD3G;NE8#;xgZoY;C z_MjebZMs%6T{;kdTT`nM2XY>3K5G;p{y#_Z_oXwy|)a}R$)?)u)-vGSTt|A)V`XJ4+bKll8(JIARO$?4>C zU=Ds#WLqX~`zp`w$2LB_lba)ipKT*b=+G5fmP8We3>a$O5O;q?pwjmwLWb|>Av$Re zJ88nw%*oN*^tn!tK6;WDaq`MUr%s(|sz2KD6DRVhgeGp;EhX$DXMPKs^(`qwZf4WA zw_6oH05NMX-4au9*`}nVM9EJzZ|i-33h+7j1VPp@_pHpx-U1WjPhOEe;riqi;oN_= z>7+UI?8*A3ll5)iNtYz01Tf3A-JYhb=_hC2BBwjD`8`u_^v`iHyUe_cTQV)-Nsdy7 zY_VAezL}ID+ul%cIpg!GQz!N6vwHH{o;*oD7JD)w`lRl~-zhURbLu9J?WFz@AtE`2 zo;rKv7e|loEmeuD4ktopn+516m!y1eXDi)ek;}7F*^I~1L3ue2UA7fI*DsqlyOJ4Jke`>ZV;%Wi z>3$p`pK7G~)gvl8H`Sja-$_K5Cvr^yf0L(8;8p`co&*8rOQFv)o@_ zfAr{gUAI_(Q4(htiK)!iVjYrV&Eqt6^faz}3`421Ii{#VHj#88b50Q!%|#1OkuL*B==>T2lEmw%(o< zp~UR@{aDxh(a_;(Ws0#V+r#k~ydx=d$gq!k@;QQhK51^xr%pEF7ciZonw(-xZbYh_ zY>ct$HFD15IR=>_3t_|bF)ZK|K|9qb#H6v24j2$ag&AXi&`3mua4Zk_{3BIOcRKjW ztCN_l&{PL?)z8QRyph2)ebF>+!3n~*+C4xoQ)WGTRViegZdL3*G_FhRus#4vwj zJ+S$fk?CT~2puLaX%TgXRx>N zzfqkuHc}lLV|c(C#VCL{N9-VW(T}BVWGs(SAf$mqQ;d~x>Ld#xiD?9SH6eT9*hu9P z-jh@=`XIReM1B3E$}MSS>@H@uk5$&KZGfKFpWp5IU)J*6-FZ5N&wZ_JJ4wO@$Nh2bSae#O_WkfgXp(0Q02v17nm>c~C+vUVcj5^AfBiipfn{mLXGxe;b~arr z%aZj0R_ni}W(-eL3(dnQefyN?u$byEv?o8-^G?b4=g#)d1ADvS)QOmx^vIGEoNFf< zPw>!&M(#afrbpumV&IV&wrXNG9eAetnC^vyv4(p1G0C7D^bd`74Zo~8a_VsX-Vw=V zPDwSUwp1`HthhhBz;a8bUEK6IA=PfT!dSCF?lGWXdq~7H4IFZjGh^U8y<(pET!yl5JYQiI8jew$Y$ho z4F04^ z_|&gdoH5~wdw}1+A255KJV7pYAzfYpX@P^t}eh_B&9T|FEi z7UGUHHlVsaQP)U3qv}Hekf%OY2cZo|>Q2Pq`bYzo+i)UQ2S+IV#E~N>Vhl9I!zB{r zxp4r(;wVelo^7`(a!GPQL2~|WoXvOS=2>&_<|$(#i;J~vOd%1UEw+r;dcizrUKse? zfSBuIM;c;)3+e>btUH1Mb+N{}BMo&8P*-43Lj$s-9%KSeb#*a7SO-J^f2;x1)}bHi z1$hA55eSVzWIaT|6;KXRAAy2Tpd3Laat#eYs>3Jh4%aVHWwf+QCDV{WvE!x?7+L1@ z=hc6&Z!SKrL3YTp)U#XGZwAKQe-1e(`_?P(>i=NMY;V}dFdu7xiq;`QaNuJesA3%p zfJ;n)F?IB9sN-?yM-o5+=A-;P_z3qm)Wh!t7C;4K6hS^!m^8lt03ZNKL_t&zWIlZ2 zFi_&TJ5_pqj-=lsMtv4-fU;Qoj^|H_x+B{rbIituKgMJ6Ko&s;Tc00ad4D_Yee^wf z?8LF!6Rc{9F2*6%_2P~srjH#y9P2IFF;jM;TLY&D{Eh?U+E}diaDCl#b@h*`Weypi z2gPopVRM#rUu&sq%kKXx&gMS(Hsre#fa}6+eh7`spK1U_WM=j9@CLR&?CBTlj=gxS z7sz$Td0l&niq#5VZQbX&hFWt1LaqCe%f}mP@n4=ha%75&4KC0MA-=IyH@v}HDo&li z+5A9eCT?La!3UBkCPPGF^FTJ)pnxsw!K7aK916J?zgXKVEOWgLSDT2m!H|#I-k2=p zoJF3ft34t9tF{689IFN8aS$-?{kE!IFc=|s;bMCK0H-CV0XU<7Wo= z*fGFxysowuE04)z4TeL(Z2*aY*oN8$EczH^KZg0CgxcC8wGGE&#~PkHQTN<)KPodl ze1hGpjzUb!6IQ*?nUI>DiOV+t)M};M_Z2?#g^O0U0!ci>z%ni^|Bj?y`Mdzy^Aj%~ zuB!!J6E7M#Qvot^f@B!0dyHVx?-)hb))IgQLJ#~pTz9+{1sNR5?=g(5MN$A%IyCU+ zP}@M1MZ^$`>7X?qAq|$ec|^`;tLUmyp2|7)=B<5mq!OGEqPqfnSexRWXwdvlOImsV zUY|dMe6DmafAP74wY3Nw-0|a7Yx>}UE&c59DWWo7(Ql2jD6YO^c))-B3XwEj!nqTE~Xn2fU{O( z1&{Cb#bqm0UZ5AsbCPq$_xkji52h^e&T~Hjm|r|t%P@;NCAwpEhj?}CO!54h(cn<+ zVUd|9scWcBNP9f-l8H88K3>=GT>W>`Rr9O|VYMrWPtM60${+0a?%-UjO=2b{J{3(Y z&x$)IS!-4;pwzA9eR_X#7>qHzRlw(i2M-`n!m zu4GFQ`uE}Ne5*xK%qw=r>XhkeTF}<}4(pxGh&f#8S$Od9VZeO&Fjkr*neYPVj*~do z9s>=;uo7N65k&wpqC8&5sROu=9j`TL!`cNFL*L_^)5jQSkex%Q1di7<;mH0EA7)3OqCrbYmD79r#cGLvhz~=U*!RDY|VZ7!2^fT9X@pE z_;K{q(vdj~sfFV)IFSewHMqlOeVnd&j#?hfQXfA=FcB;k!wNrST)9_9?SAuNI?C~pPm*GT9x^sB{p-ZoZ`M&9a2=E!)3n1WF``Uwt4guc} z95{IBz#;a7;{oP}_yY$iq=sUSLzUUJh)2IT)*eIwI>5>}z)~HcvLNKZ0Y*h+{@%JD z;VsG~;sz?A$1KjWG|8#2q&}35s1$y0yTTt`VLaVHLaheYx$3kg554(nPlm&_n~-}U zKz{LsgEfb15GvG;9S|qDL+GWz1L&yo2NBHymiiE-KSU|X%L~A?7)Ytv33D7mVjetL zgQ)=Xf#drR)zloh80F-|k|n1sjY!v@gY{a9YJPkHUCn6W*BZ13N{|Ahk_ zGlOK}=l=aB&Kk7`+8m%5I0Bh4!9H^mj04J0l6|aznghMMnwsavLI+bKIeQ2zn$RN# z4b$12Bk`V0UuQPf*(KSe)rymEzxtCNVJwL{3?RSo!u}e9fe7~35Rm=*Yk(RxRPp`L z0{8P;L%{xh`#3HP#1u9AYZ$uy;tK~T5{iKMeQ@T<88xu<11}ude`p_I-aB$63>cI7 zW++)q@<1E6XX^v1p?P+JSL_b#IoHd(Y-@g>&w2Lt2lve~Fz?%2v!B(nX5YS={riCL zTZVp;oH?ixJRU{WgU1t3z*-sk3yR`Eta z$zj@PPd16_Ocn#Gw^Pa$W2l_4XC`q^sAA7c{Twy}pJ#w4gc{t#6;oyMTp@ym%(U&aW(sDdPMHqw*#a0*6bZS(gpDJ`A&VSqv}i>DA+tK z-{Nu@os(%WVp!-UWT{$nGd}Mby?>gr(CrN_-vNC78L#pF{a4l<+%|LI4&m9~!?Sx| zLI9P;3*2VJZ!@QQaqn|W@L_k+#3)P;ly0$*DulMiUw%e%hehS;RZ@&&;85%txQf(veZeAoX`rzK0AE`8sOnh=BLP#&~E4tYSv(pi?!B@G*b9ZQ)MTzAWOY)%9 zcdvoj69CNne@1-Xy?Z}>cJJPYzg;`vylor#5#tW5=#Kq_Yuh%s+JTU_0d>H$pT#3t z_Cwq@%)6ic_M78(Kr^Q@cR~3ORkL^RoqQs!=aRW%89t29g1wiTuSllN`VQ0f0%m#Q z>Q1Tb7?GAS^mEyq^x+i59Ne=T_`CyoN?>>I+O`dkyMVJ$d%W5P)!cz6xBxgikQ8{i z9}c^=?bwEHA4`XEyD5^&+P!<*zU}*1G{v)`fKt15y|4pVe*i_>WwtZ){?@7AIr2zf zYnj;|5qm}yePV^J>N%Wg!-l@|xtO6nBcFGmYy$&#Vug00+XvWo5eT{f2k>`OI9vgY zZ8}AEAx+=_mzV$(1DE$<%r@b6V{Rre=!XxLxnt|@T{~-*sH*9nW}%|sWXm4LA0z$V zz~NTeDJf=)Mb=w`%(Q^4N~&tf9r$q4wfU?e=Kuch9ioC;cNx_sOn70`zo$cp=yq%~ zqwF=uPE!K#?%KM2=eE6j?Ts=qX)*h#jj>~P2l+ujoTE`SUjRnj#v z2Le9g^MCKyu~XD+5BRo9qEdFjsQBnc+j;T-2LI)1s-o;`BsJ*Yqe(& zRGhm#yY_6`zRS46F9q%)KYS9B@{8>dyp1IWa%|tmulDTPwtWvTW)G#>wP(u;&jWm`Z#;`$&$FGj-I>%6e+W3T=QY&A5590d9>ix zJzM|#*=M(Ig-UMSwrBfxtQ4RJA9I8e0=8oO_U*viJ=@{Deb;tKf?4(;{_PZo4olj# zon7yy0=DTzvGVp%mMwd>?yR9_X{-7Ko@(ZvIfy+SWZI6yo^*4DGh%qGYSj@;3$A`9+_|JwGO?_L^;IRZoIQLHf4IhbL$hs?1K$fEo9>&G%+eudPWn7{?UxUH zICoYU+VhsJ$Y-qd7U1L-s{R&+Vhe?_Q10K#uLMj2yhTqh;`eM3SLXC08Rpvj%=Rri z?^1BwtWVyuL4>U!Cpq^KF{z!J&7P&Cm>wg~SJoBtB)2>y>!WL9#^;lG0u|2!o1Za3 zVs7i^Es5?~ets%3caf=z_W`1?$am$v?p99&H5)aQ@0duptggsCF zbd0KshrS_~OW4yZE!nvbh}WHD+Gy!bRji7`*tM%aaYgUIlv=Ed%LYKiJ_TIk8q zLQDZzfh8w5MLcui_GG@QtjGy=7og2Cwv^y{P3{+Z%gYCIXN0}L=gnK5*$9US*=PcCo!rw~c1|jF(CsFGBuCuM z>vU#jXZ=cFma|Cw$;+~&&;K#{SlNT(N+kIfIeB>TdtVImT)?b_0r19+&ulPP2QN18 z!v-UauGmM2g79zX87Hnc2*KH4l#G1du;J;apBh7UH0@>O(;hBGku3V|myfdYZ8p=u z*|dZw>+e1R!AKs||HnyR9CIZ2}!39ctbb10j!J{#G=1bjnp7bYhXuZIu+CL~_ZLWEn5B-p%onyP~R zVV40DS7JEAvJ~s;XncNhnXI~~ZL$c80CS<#lP1V|!vdmlm#;5)U=UXHR z!iw~}VjcPenfXKEpf{Iu`~64K7snj-Rs}Xa^~}ai8`nRXfMvC)EUPL?&-$z3W1{r&|s3N#W{5U7&kQldv;$wqWWZTW~R-FY_>bdFySLecJC;&z>yZ&gMXFu z5Ait~T)mOp>c`h}$7OLn57@wd8}#V)dXy>sdQ*B+YE#0EAo;6Tuit=wwrca{)r(iJ zUQ{r;RJPh=MN(Cl#i_WU@3LiyIibe@^9bzA6otPwfIYWDL2(~2ya-5D3avT6&xE9Z z40AY0m4No8L)h38BNtK~#N&yOd!$&;N!G)yTfc6@dVzV}hNl7l>P2J6stzl@bqO~` z6iIlqq^%F%4feO&vvaIDX#y^_0%n;M7TO04D6}h*Y)Q_}?>qhv{|M$eVQ;_e_6Gc`RwL%s zDBJ4<%8dqd3;^o{5!S6^m#bL7#*HGWNN(g^N2$mMm>+)}F;_!|RZl-Xf6>#6r;Wii z3>!!{sH${_DwpJBic#caY56%;r&HHk^d1+Lbx(4-THZG|H+Ap>zyIHV=;eK6lYnfm zLTRh6hU%@uA4neXWaGMZJOB`{!wR!&Jn`dt{bC~~6Vb#_kOpz7=R&$ZzF{3=UbXzG z#gis2Ub1BD$Wk0h(W~<$@Rr#!g%LTZ+#*}V(j8#NXH>9ZXF=%*IWseL=pDcM`#<`^ zLcr|vhQq5itXsQr?dsL5)~&*t(Sf^F`sGIStr8*Y=|ZH0tBt*;UuQnRpR8W__~VZQ zO*d|O{OP9`jh=MZ;>DBkT~zpr*CLloDU+mvOd;BTNGVToLi;Wi&%|@MXt#)5V6$Xe zYz4P1efvwi?U>s03Jq$scJ0Pht69x93A`M}rgc5tCL^-fcyoS;t=0opR&RV9{{%#8 z`O^z0j~+8=+LA@1RoabRq}Ux23>Pe!OZ9a*J3XVMl;%bG!&#wQv)P7#KEM6PpMI$q zQ@(%y>}Vha?HNeFa@DFU>VGAiY6x1tl1Cc2dernOg z($S@NEm<Om%DN0>grXiR#&gs zxGwtiPwyVBj#gD@&|?cq2(!H`O)jz7#FF#Up*CiqsjdvAP?BV61Om<;oR#(PJ74|< zqXoZk^<=71XFOIXN-c(08;MMCg}>U295q*UH6TU_2hmSS_oumY0JD45 zs_J!XSFB#Sim`;asdJmTb^N#vE6%RhZPde=+gQ!>^K?|wMv)uJTS2mo370?q)S^is zvZ^}zz9pkeu|X?fVc?6Vgx3COXa<|@Qq}ZiOPSM>Q=FMOWJuP-Cd8k-`yZeDqnPo& zo63-e^;nC72Q^!}Nyo5OK*2h1tmbGJ=&N<=Q2uoZ2}LYO(#mSWysmoL<4;c; zTjD5jsIEJgj4dr;w+@YPSn_S+i3_jwwKB|-;}&IvGcBh)8QA=YUiZJg{>V*zZhGV& z=JSVBIOY}LR;^msqoM|TjnL{%W{3vl>Yg~wjxN{2an;I|@U5<1wj4y;VH+U>qo+(k zs|43D$|Q?ZUw<8+txtqVBP?kna#D=v&%XECgrTYZ`V1X<(`R2owr6`#wpXrPv3A9( zWl>($O^MZq%S|g+Bt{9hsk$fgdx2cNk`C*D(W~IU)~#E)?D2&YRfnZOa*T9+`$wbE zDk;G!UZ*9Ko6aAl7F)!Sd7RzqwDcLm7AgMt*uz5y4bIHSD=tsH`AfXS`%l2<5ZIoa z&nq`E6f3Kv)hLM7D>kj<^^HUc`KA@s2!16-t~3Bssui0yt>jc-(cq0zc1li1_^l%3 z%NLDtLE|j|;T|<*EPGXpBw6y4#caXS%yNkjEgVuB3_>3JGw}DfcMKdnG$lC=Xa5|Q zya&IG4x6&T8wy1b^V$_CbrGoB3eFj*-zNC2;jkEt74#(xCKrXID-ctZAW>fdKT*;Hsi4vED1NRx7Z6#A!I`EW!}-fOiFcF`6Yd z&MUDrjG<)Jl#05-Y7{04UA=PkqN!tWiX=yNI*J_QO8N6e$}Hk77Vizsu&aC(UP^zo z?X8E3(u%F5{Wh zQs|{Uz;$PVr99j6<1f`e(>tY4?v!+!i@L4<9_OIApbK+?`Il>@0LD>3qUKwv4dlWai%b<*d&Sr_C|= zTpeBUMV*-vkrn@tqgJu9V)YY?CY92|8ff~Kp7ZZeotZxtd*F&kIOzFOigQFcK5r>K z-CiiORd?BGDbCIx_=hiRhs_QE=4f;cw&$vZ%3T|a)_ZW|S~;RCS5?e^0)|zkVxJ~X zcH*+SHJ2M7aW7e!!!(M*BXzEpjYFNFjqv!PQFMakv!Frm8%xa|G~n=Qzy}2*om*dl<`U1 ziba2b%J?B^`im~`sd0ATvvVBH4uQza&Xn8WQF}R2sgIpsk{dDDsZ+!(#))`&K_E@hiUpG= zOqQDZkuC@#jyycSrV->d%PJO38Z&X~6VoQ8k5(H0*X!2g5tb6wbe9c2KuyW9KuRE!V$FUa=__EK6$as67G1Mu?V3n5B0vcV z<_EggI1RK!&=C_(onn#1_!XRv8svrlSynM?;+Qd$7B9YAEmi5cI#$x&ig+N}dqXoz zB=Oig2iM=A;_wbS*;1C1HvW^ZFlTT-V2*0hWs$XO*MMy66%-W~oZ^QyD|BQWp3#EY zX^kPqku|2aK?$@KK-;yI0j3#Q=F1k{J!a&XiT5sr)3K# zxzv%aNsD1{ftY2R71y0rTP{~j<1=j~C2G22erhFKgLF!Aad!WuUjcH``%`9xz~I)R z$Y)c9joNa)u8H*O7!~y9Z;*w!%!^o~(@10e!?J~AR7a^g=I+IJsw(cSpuLO0%VEs2 z`XtLH7nI=h;$&luU7=S3ms)c2``qza(pTd1^e|%9B1nHNa#hFqyv9t2f84gQ=GUT14uf%7R?NE3b zU|v%h2}89iiBW6VkvO)d(#&UyS;IY*6jTZR%7_TVLuDjUIM%R`kQS+`T3Z#Ff7fV- zMO9s6?p`!eRq@F>RyH@ld#XE9VeFyW?RH|Yc-;+jR(NZ(ZP;r`Ukx+ru#mP)t6a0T z64=M2zY@%{sAJe%Lof& z=Y+=GtNaQVO7v+FKeeIgf=Q|+Tb4^lt9RZdm&)w+I4Q@*x7fdtYG*Gmv5Ob#DUwBU z;6t|3%9AG~ePzrGe3hXv6ACIy-R zt|f>8X0Jfo6ZkyQMVmuP)zZ=5qPN-L%Xn=0@A1u!!|ACc4t%zbOTQ^tayjkUDGw!m z9hklIs6B&r(!wFmQGV7zn&4_ZIy8)kM$EAxy>$qMAQ-Q4d0IYkBt49_6o!T4_zSs| z95LhhNJbvrXW+0Zyt68yAy%2w)_45JUk7FyOA?>g1Ozr+R7s9QT12p4fYeMm(^ z{BW6)J@B{uL6(CovUswT@q#X=oMsvRTGH2pnYU+CBDs!+ zI4X8#O@m8E$l!2@iT;}Cvf!dgDti;8>PWkV-jP>k74NWpqkleo1B7_a46wOW1`U^1 z{=nA(nZ{MVa3C0F##IO*goG9gaTaqmrU}svL;@kk*2+*6eF4l7T@%H?08dVmLCMg% z3kBc1YAGiyAd z;C!?>@s3V$_ncG7OTB~NeUY0D18ROx3cc$=Dk-t#XWp9o>DK}opG6(^MtENp(si;% z6*L(XhDr+QG95+kaTkSV9g0xX4n#-{LQG|cF%MFx3St5z+|aYnUoaJ?I~4t)K@Pb% znLRW9?bLjmcngADA}J+hrH+#1Z}rXW_xjfZ8Rv$)fLUXkGU}bVjf}^3!DNd!R0@nu`so>j$?rZ{sl zv-(U(`r0sKdj{Jx2(nFDim4xsDo1=aeF<(zm}we{ae#MOAit3+7_2bK2ynFx)W9MG zfhrB<0&%0{BjyE@$Iz4G*@BhoOy>_d{Ah5#1u(nVJ7MwhXll7VId}X+fB)Jre}L^d z9Pk4o#BA6gtUqE%`59zZh$l4Xsufivw_&hY5h}G@ToVak8s2ANXgJ^vRDleH!htY| z5@6S~74zpW8lyUFij}V~J1yC4X8ZLln}u#XDndpV;`Ts`CFiks{@7T!FjLKfljBK`)X7d|DA4#>@EDo1SV+&cb+KZE|kA3>TNnfL*_N+l)6$%07FygHY zRaOCn(3cFMD(u&mHKAteV`u>kZ6a)QB=(VP-`0SIuIhb$Y2nE;4G63bkQjEidf1D z|AMKsi3BhMOKk<2gUKTKcxY-~F$^+G9cq~}pfDqK{2NJMw*x+Vy&)fyZKx)2nZA|u z4KPD05MgSGk1KeG1ek%B*ghjD*l-McNQs3(T*82|3T2%uE-vUHYR^zqRbc*IV^p?n z6)evJTPC{)?zgFf^3f8JWVOg{Pf7i+_r7+>NgvFeGtaAegP^x7BY>QkTgiaqkGLFR zIu}ktz&QreS-@!xkc2g0c8FjCqpKKWSs#V`tqhSIfb)~u2+UtJiNDGjhRA@K4XPeU z&CS926UFIFOCEOHZ$J6^AyZ$4_O{OFh+s7yn4QcAgaj8s)0gWp=;n~upu$KYvmp4O zG7osYT$3~B^?Kca*zch<6^kaT`t6TSTQYkm&9L0u980M>V65FTJaxh!lfDUu&ouRh zeZe3ww^9pGV~$h`i;{~mek0fVtMu`XkWxY{Y!`93s0^tQ%QbvS;2k>%|2>WV12T8#XYu zrBW$=&}msic>WzooYVmR_0xbN|x z2X~?c;RF9w8FJ5@HMx*>2H^}Re^TqMwj4{L(_&A){g2-mWPFDJi6za4MK_6lG!zA9 zc%wK*z!4EwN2Iw({sY_~i!ggk^DuoZSnmz^cjy*B~K&-onW3Kp~x)XWpr!k(}v>IozNnRsGsL<eng1CbpCu-6AV3}ibTrdolC;X$?J zf#$4vK(IYvTap;#Sc!`#Q|8#;0#dh!YiSR8B5)>8$m0c{#}|Na*bDpx5%2{)K`+>N z-k^Ktq)`lWb}HMaJ|V4ez-_5Fef*6=#{FT?;5?vDk@9XXy)a^Mdr`xBH8%)%AR6(K zc8Yp=TV$z>?v~58CX5eZV0(Q5AGGDLhcvnmjnklytP?bNXH6cda?CV%{`<{V`+)vK zzgaG``E4(*V}#aV|I7pxs1SC0JfO6ZPhL{F9$}S+vJIQ zBW@TrfZ$`rNwB>_JNW}bW4oC?=IV>+2F!*WNHxR^*`d#Z68wH|pb8>A{tCoQ4^kgU zYWwv*dFiR&h>6`}U2-7|C85Tkwm}AIKunAhcA{q3Q$jgwn$FZnnCvc8dnC>7fRh&9s+wsG+@XMgc!-3e>hK{gvYGcZ(!C3D}S5=AZoS0Y!2_K>>S&->^PeLqGZEG2{9( zT1RAXgY8L;HxlI*G_WY7_0neDCcg46==U_To~Vn+Ya^;l;VUu&$Tst6foduE7%pI_hCM%->V73zB&Vv)h07 zXqQU{%rs%}?#(ydaUCG*d=4OHkl7H7q1o67HIRolUAHi+%#7o1w6Z$Mox?X$+9p*+I1{MU@Tl&O?&QE`UcT8HqWK8Rx zh-MaVuxJd;-UBb{Zd7bY-GF=6q)`J9GmVvR8lRMO-S`ZBRS@{>^#p19l7N#gi}a>{ z$XfF=B9J(H$*w}~c{L^+QPJ4ltn23Oz|SLC0xcSF&!0GIlp+<-B+1`z`t|j}`~g1C z0ARRru;|sfE{^6M&`xaSXC)9KKmS9g1^?76i0QzyCx6lP{&Ret^J z>xg+?7%)YktHO~_h)FBw_UGa9FjeH`!wsRzG($&)ucEt*{%`*L(M68@%pq8n|M>g$ z!i;NlAsScBgE1wC%T^#w)zg^9?!hU)M`OcEK8_0MEnX;Xzn))Uc6&^{HDDey%2~kX z^Zz61y774yn9Lq#hXs841PBfHLtY`yAy!RyqH*DNN7$^Fr-y0|XuX?m{zOthBboZ` zQBEhD&wum!VV>?q9p*us#OE;?lU{vx^Qx^hV8}M<`5xwWD4<7=Azt)p#^XE@4vSntzeqAxs zoPJf%AFjkHz_6%#q{kG9JF$<^<<-lk{6Yc4e#7Zsx7M3vdvrT4B>FJGJW8<*`Tcdp zjAO}p-XPf-Ubi2YUvM^>tZiuL!afOwJs<`FrkkL$Q9ghOaUB-WCroL$?ACiZKSvoR zz-}>S(bzCr^Ut3=COyB;JJ%O8z6&|v^W!=OmpQij!fF}~@x?XG1MnifOb3~p0y8wt z{jjDhcu%ipH)2+XWPNg-`Rwz~gBI;4g%#9?hrfJryJYvAAM* z8PXxMIg&)on$YwW^Cy=|wyf(4nZ_9NKr`W@Fo-yaas=frOs2M%O&y>>mlOS8vcU(6p&n+?Jo zL{)=bR+uZIkh!nLiCtRD0oe{4Jr&xXAvV193ci~r7QB9w-uK`ttVg@T2n|l3Jlc^x z;X3nq$^x8fo`FUQ45JCM*N|QkS>!xorbB`bGM44M9x=;hGRi_ipJ^VJzo%8>4+Ebi z%N^Gl^IZ!NVle3OhN^;Kh=pNw;Xve5`56Hfzu3 za4aGm{K4eWmb^!GCuK!REb@Ntz#cC;T{7gjpl~L)&eh15*yaW6_dhOjyZAlYWCF8&ips7FXp5v zb9{ig!jG8U9$jYzdf+^1M�iuAuh#i35p%Lc;i$*>M%dwKjKfAH1UKYS{O8cG;p=aAY8ih@OY2TeqV6* zWS5%p?sew#^Y{8ZzL})MLToV{d+0sF} z#*uE5U{gM0bwmq-?dfv%z22BVy>s?FZ{@s794ooqA@3&mRMB|SE6ghm45%=%5=;_Y zqGo#?!)A7RDV{}!8A#l1g!T=LL!wMOgmLdPH)ehC3HxUHCJz{p`iJX`IqA_kGw02l z2lj}&!XFI#=6S+`wP6?$dBQNr@~}-2z94Rh@zMqvAMF)^RuJ?B!ahKXd)>TX&3S@= z(hbIq2m5fi#C2YX15!XE!VNWW@P*mdxS(&&`k`MlIlm8MAP#=!VCeCg4@>p?@qqEZ3P|s+phB@+-|V}; zZ5j62^~U_^qd%Or9CvJ^0z+QXo)_Q+a?1x5^M~CUG(;`z2W|z46mIe))Axw5XQ8wU)f_-k_`RpGIunbPR?(XvU@12fIH&r0vv}?Q4 zi?j6P4WIx-Xq!*SxW$0&%MKWK(M3Fgkg<1JOs>GGin{g48jsh!FIMaq1q*J*55}bD zUVqF<&wqEa+dHpnUR5RDYE_B$1;CwGS&3T@a05H5A&Np}gx|Zs_VHKhTY%XvXfFlv zxJnAHWI-&4w~{*^0K=N86P3RI1k4{l`rYZCNyp`w1_|Ij(Vdw zw;#fNP|$lpUlsA1j8QL{Qtb8$&SH(NVGwXP+XISQ#QZozh{J0wz;`zD%zU5*8H1BY zmHjjLoRsvJ`xZhsL;V#x|9tn18K93r(fD;Y-yf`~0PX8{&j*cE5riuWhohT$FdEzp z2wKLqyPg+Z5c0qelT`#~xIueYfGV3hM#=rBVE)^mmP}r-e8y}aBB_`O6`DB{IuiFx ztR+AIcokqY3HUk|KVk6G5Ak{kl^etT^Me)h8EGmsqzC1zsBmLI#S9{@dxodt-jUMK zq<;?RKRy>srHQ{mHs0iPBQR|dSBs>0alXi6-hQR=r4MM7*-h1VM~Mblu^!*|u8 z?T!=Rbgvdpy+Bt;nL@blE*xAqZKP%3Xa6M7pLRVu<^IVFpbHM8xkz>Ol6s1=zMFRI zde|Vu%eUsz1TWrn=jAGisjoF*-l#V5aePHXsch0?Y3v&j(ll0GXe>u8$$^CQZ-gn=$X>;bxx%b{#3+JE*{nMu1 z3vMbN?w!W3z(EwGSSaG}rNq-H7p7Xw;_1prf8QMLzjx}K`|mHb^?NtzpX)w-{||4q zw*K~azdH)qw(K1Y88X^;NqH}Lx%CK2(! zY3=FGzSQ)s+^n~gZZP-I;H-CVG|Wr0ZamDt>euh}8x8Z@{rdd+M#KEqem5_@(J+71 z=cb2mG|ZpeoOQ>IhB;|`*7zF^^Bw(ezTq%GbaTHO4)d?G`h9exVSf7tG{ipYlXb%x zVo80nZa70MY1j?eLEn*e<8@X`huw6;VSfGQo8Gz6F#q+Yo8GwL7=81NH?m5aaMO)9 z%J_Akn?Jh&8}tn~-TT@2n;yC0g!?~ky74Trw{N=n?>8Fezu$c0&G&+E-*}kc{q+qe m+y8d|cK>$&c3;B%KmQk-YGJ}$&gw4!0000") == 0 + || strcmp(cur_opname, "#>>") == 0 + || strcmp(cur_opname, "@>") == 0 + || strcmp(cur_opname, "<@") == 0 + || strcmp(cur_opname, "?|") == 0 + || strcmp(cur_opname, "?&") == 0 + || strcmp(cur_opname, "@?") == 0 + || strcmp(cur_opname, "@@") == 0 + || strcmp(cur_opname, "||") == 0 + || strcmp(cur_opname, "?") == 0 + || strcmp(cur_opname, "-") == 0 + || strcmp(cur_opname, "#-") == 0 + || strcmp(cur_opname, "#-?") == 0 + ))) { return false; } @@ -760,10 +782,12 @@ sqlite_foreign_expr_walker(Node *node, */ if (oe->inputcollid == InvalidOid) /* OK, inputs are all noncollatable */ ; - else if (inner_cxt.state != FDW_COLLATE_SAFE || - oe->inputcollid != inner_cxt.collation) + else if ((inner_cxt.state != FDW_COLLATE_SAFE || + oe->inputcollid != inner_cxt.collation) && + oprleft != JSONOID && + oprleft != JSONBOID) { - elog(DEBUG2, "sqlite_fdw : %s collante problems, do not push", __func__); + elog(DEBUG2, "sqlite_fdw : %s collate problems, do not push\n input coll %d, cxt coll %d, operator %d %s %d, ctxst %d", __func__, oe->inputcollid, inner_cxt.collation, oprleft, cur_opname, oprright, inner_cxt.state); return false; } @@ -774,6 +798,8 @@ sqlite_foreign_expr_walker(Node *node, else if (inner_cxt.state == FDW_COLLATE_SAFE && collation == inner_cxt.collation) state = FDW_COLLATE_SAFE; + else if (collation == DEFAULT_COLLATION_OID) + state = FDW_COLLATE_SAFE; else state = FDW_COLLATE_UNSAFE; } @@ -1162,7 +1188,6 @@ sqlite_foreign_expr_walker(Node *node, if (!(sqlite_is_builtin(typeOid) || listed_datatype_oid(typeOid, -1, postGisSQLiteCompatibleTypes))) return false; } - /* * Now, merge my collation information into my parent's state. */ @@ -1209,6 +1234,7 @@ sqlite_foreign_expr_walker(Node *node, } /* It looks OK */ elog(DEBUG2, "sqlite_fdw : %s, pushed down", __func__); + return true; } @@ -1346,8 +1372,6 @@ sqlite_deparse_select_stmt_for_rel(StringInfo buf, PlannerInfo *root, RelOptInfo } - - /* * Deparese SELECT statment */ @@ -2285,6 +2309,8 @@ sqlite_deparse_column_ref(StringInfo buf, int varno, int varattno, PlannerInfo * ListCell *lc; Oid pg_atttyp = InvalidOid; bool no_unification = false; + char *coltype = NULL; + int colaff = SQLITE_NULL; /* varno must not be any of OUTER_VAR, INNER_VAR and INDEX_VAR. */ Assert(!IS_SPECIAL_VARNO(varno)); @@ -2301,9 +2327,15 @@ sqlite_deparse_column_ref(StringInfo buf, int varno, int varattno, PlannerInfo * if (strcmp(def->defname, "column_name") == 0) { colname = defGetString(def); - elog(DEBUG3, "sqlite_fdw : %s, column_name opt = %s\n", __func__, colname); + elog(DEBUG1, "column name = %s\n", colname); break; } + if (strcmp(def->defname, "column_type") == 0) + { + coltype = defGetString(def); + elog(DEBUG4, "column type = %s", coltype); + colaff = sqlite_affinity_code(coltype); + } } /* @@ -2328,6 +2360,26 @@ sqlite_deparse_column_ref(StringInfo buf, int varno, int varattno, PlannerInfo * { switch (pg_atttyp) { + /* some polular usual data types without normalization first */ + case INT4OID: + case TEXTOID: + case VARCHAROID: + case BYTEAOID: + case INT8OID: + case BPCHAROID: + case INT2OID: + case TIMEOID: + case TIMESTAMPOID: + case TIMESTAMPTZOID: + case DATEOID: + case NAMEOID: + case VARBITOID: + case BITOID: + case CHAROID: + { + no_unification = true; + break; + } case FLOAT8OID: case FLOAT4OID: case NUMERICOID: @@ -2373,6 +2425,36 @@ sqlite_deparse_column_ref(StringInfo buf, int varno, int varattno, PlannerInfo * appendStringInfo(buf, ", %d)", mac_len); break; } + case JSONOID: + { + if (colaff != SQLITE_TEXT) + { + elog(DEBUG2, "json unification for \"%s\"", colname); + appendStringInfoString(buf, "json("); + if (qualify_col) + ADD_REL_QUALIFIER(buf, varno); + appendStringInfoString(buf, sqlite_quote_identifier(colname, '`')); + appendStringInfoString(buf, ")"); + } + else + { + elog(DEBUG2, "json text affinity only for \"%s\"", colname); + if (qualify_col) + ADD_REL_QUALIFIER(buf, varno); + appendStringInfoString(buf, sqlite_quote_identifier(colname, '`')); + } + break; + } + case JSONBOID: /* jsonb in SQLite is no the same as in PosrtgreSQL, use text transport */ + { + elog(DEBUG2, "sqlite_fdw : json unification for \"%s\"", colname); + appendStringInfoString(buf, "json("); + if (qualify_col) + ADD_REL_QUALIFIER(buf, varno); + appendStringInfoString(buf, sqlite_quote_identifier(colname, '`')); + appendStringInfoString(buf, ")"); + break; + } default: { no_unification = true; @@ -2996,6 +3078,20 @@ sqlite_deparse_const(Const *node, deparse_expr_cxt *context, int showtype) switch (node->consttype) { + /* popular first */ + case VARCHAROID: + case CHAROID: + case TEXTOID: + case DATEOID: + case TIMEOID: + case NAMEOID: + case BPCHAROID: + { + /* common branch of constants, deparsable as a text data */ + extval = OidOutputFunctionCall(typoutput, node->constvalue); + sqlite_deparse_string_literal(buf, extval); + break; + } case INT2OID: case INT4OID: case INT8OID: @@ -3062,7 +3158,7 @@ sqlite_deparse_const(Const *node, deparse_expr_cxt *context, int showtype) if (strlen(extval) > SQLITE_FDW_BIT_DATATYPE_BUF_SIZE - 1 ) { ereport(ERROR, (errcode(ERRCODE_FDW_INVALID_DATA_TYPE), - errmsg("SQLite FDW doens't support very long bit/varbit data"), + errmsg("SQLite FDW doesn't support very long bit/varbit data"), errhint("bit length %ld, maximum %ld", strlen(extval), SQLITE_FDW_BIT_DATATYPE_BUF_SIZE - 1))); } appendStringInfo(buf, "%lld", binstr2int64(extval)); @@ -3143,21 +3239,22 @@ sqlite_deparse_const(Const *node, deparse_expr_cxt *context, int showtype) } } break; - case BPCHAROID: - case VARCHAROID: - case CHAROID: - case TEXTOID: - case JSONOID: case JSONBOID: - case NAMEOID: - case DATEOID: - case TIMEOID: - { - /* common branch of constants, deparsable as a text data */ + { extval = OidOutputFunctionCall(typoutput, node->constvalue); + appendStringInfo(buf, "jsonb("); sqlite_deparse_string_literal(buf, extval); - break; + appendStringInfo(buf, ")"); } + break; + case JSONOID: + { + extval = OidOutputFunctionCall(typoutput, node->constvalue); + appendStringInfo(buf, "json("); + sqlite_deparse_string_literal(buf, extval); + appendStringInfo(buf, ")"); + } + break; default: { if (listed_datatype_oid(node->consttype, -1, postGisSQLiteCompatibleTypes)) @@ -3338,7 +3435,7 @@ sqlite_deparse_op_expr(OpExpr *node, deparse_expr_cxt *context) } /* - * Print the name of an operator. + * Gets SQLite SQL operand or other value for an operator. */ static void sqlite_deparse_operator_name(StringInfo buf, Form_pg_operator opform) @@ -3810,7 +3907,7 @@ sqlite_print_remote_placeholder(Oid paramtype, int32 paramtypmod, * * XXX there is a problem with this, which is that the set of built-in * objects expands over time. Something that is built-in to us might not - * be known to the remote server, if it's of an older version. But keeping + * be known to the remote server, if it's of an older version. But keeping * track of that would be a huge exercise. */ bool diff --git a/expected/13.15/extra/insert.out b/expected/13.15/extra/insert.out index fa1e72bc..25f5106c 100644 --- a/expected/13.15/extra/insert.out +++ b/expected/13.15/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 19 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/13.15/extra/sqlite_fdw_post.out b/expected/13.15/extra/sqlite_fdw_post.out index cdf38ad7..02b9fa29 100644 --- a/expected/13.15/extra/sqlite_fdw_post.out +++ b/expected/13.15/extra/sqlite_fdw_post.out @@ -6437,7 +6437,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6448,12 +6448,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -6856,12 +6856,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; -- But inconsistent check constraints provide inconsistent results diff --git a/expected/13.15/gis_no/auto_import.out b/expected/13.15/gis_no/auto_import.out new file mode 100644 index 00000000..c293b864 --- /dev/null +++ b/expected/13.15/gis_no/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/gis_no/type.out b/expected/13.15/gis_no/type.out new file mode 100644 index 00000000..a5f43f4d --- /dev/null +++ b/expected/13.15/gis_no/type.out @@ -0,0 +1,537 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/gis_ok/auto_import.out b/expected/13.15/gis_ok/auto_import.out new file mode 100644 index 00000000..ec81e744 --- /dev/null +++ b/expected/13.15/gis_ok/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/type_nogis.out b/expected/13.15/gis_ok/type.out similarity index 86% rename from expected/13.15/type_nogis.out rename to expected/13.15/gis_ok/type.out index 9080ee38..c5eccfaf 100644 --- a/expected/13.15/type_nogis.out +++ b/expected/13.15/gis_ok/type.out @@ -7,6 +7,8 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 46: CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 47: +CREATE EXTENSION postgis; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -287,10 +289,10 @@ INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); --Testcase 56 SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} (2 rows) --Testcase 57 @@ -495,7 +497,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +516,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf @@ -531,61 +533,7 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf -Infinity (4 rows) ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/13.15/libsqlite.out b/expected/13.15/libsqlite.out new file mode 100644 index 00000000..087bfd53 --- /dev/null +++ b/expected/13.15/libsqlite.out @@ -0,0 +1,30 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); + sqlite_fdw_sqlite_version +--------------------------- + 3049000 +(1 row) + +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); + length +-------- + 84 +(1 row) + +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + sqlite_fdw_sqlite_code_source +-------------------------------------------------------------------------------------- + 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde +(1 row) + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/sqlite_fdw.out b/expected/13.15/sqlite_fdw.out index eedc4e38..e1be05d0 100644 --- a/expected/13.15/sqlite_fdw.out +++ b/expected/13.15/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; @@ -1462,16 +1462,18 @@ SELECT * FROM noprimary; --get version --Testcase 153: \df sqlite* - List of functions - Schema | Name | Result data type | Argument data types | Type ---------+----------------------------+------------------+-----------------------------------------+------ - public | sqlite_fdw_disconnect | boolean | text | func - public | sqlite_fdw_disconnect_all | boolean | | func - public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func - public | sqlite_fdw_handler | fdw_handler | | func - public | sqlite_fdw_validator | void | text[], oid | func - public | sqlite_fdw_version | integer | | func -(6 rows) + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+-------------------------------+------------------+-----------------------------------------+------ + public | sqlite_fdw_disconnect | boolean | text | func + public | sqlite_fdw_disconnect_all | boolean | | func + public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func + public | sqlite_fdw_handler | fdw_handler | | func + public | sqlite_fdw_sqlite_code_source | text | | func + public | sqlite_fdw_sqlite_version | integer | | func + public | sqlite_fdw_validator | void | text[], oid | func + public | sqlite_fdw_version | integer | | func +(8 rows) --Testcase 154: SELECT * FROM public.sqlite_fdw_version(); diff --git a/expected/13.15/type_postgis.out b/expected/13.15/type_postgis.out deleted file mode 100644 index a7c72dab..00000000 --- a/expected/13.15/type_postgis.out +++ /dev/null @@ -1,593 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/13.15/types/bool.out b/expected/13.15/types/bool.out index ccb740e5..814110a1 100644 --- a/expected/13.15/types/bool.out +++ b/expected/13.15/types/bool.out @@ -239,7 +239,7 @@ INSERT INTO "type_BOOLEANpk" VALUES (FALSE); --Testcase 44: ERR - primary key INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) --Testcase 45: DELETE FROM "type_BOOLEANpk"; diff --git a/expected/13.15/types/json.out b/expected/13.15/types/json.out new file mode 100644 index 00000000..68c6700d --- /dev/null +++ b/expected/13.15/types/json.out @@ -0,0 +1,3164 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + i | tx +---+--------------------- + 1 | CC2B173501176113... + 2 | CB2A233131233232... + 3 | CC1C17613778797A... + 4 | CC11176100276132... + 5 | CB13133900133713... + 6 | CB2A35302E303531... +(6 rows) + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSON" +(3 rows) + +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | null + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j -> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | null | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j ->> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-----+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } +(3 rows) + +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} +(3 rows) + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } +(2 rows) + +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} +(2 rows) + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | null + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | null +(6 rows) + +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | null +(6 rows) + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | +(6 rows) + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(3 rows) + +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(3 rows) + +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+--------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] +(1 row) + +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] +(1 row) + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | a | null + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | a | + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + i | j | ot | res +---+----------------------------------------------------------------------------------------------------+----+------------------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c | [4, 5, {"f": 7}] + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 1 | + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a | xyz + 4 | {"a": null, "a2": 2, "a22": 22.0} | a | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1 | +(6 rows) + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a + 4 | {"a":null, "a22":22.0, "a2":2 } | a +(3 rows) + +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | a +(3 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a +(2 rows) + +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a +(2 rows) + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | null +(6 rows) + +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | null +(6 rows) + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | +(6 rows) + +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | +(6 rows) + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+-----------------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 +(3 rows) + +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 +(3 rows) + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+---------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 +(2 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 +(2 rows) + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(3 rows) + +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(2 rows) + +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 +(4 rows) + +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(3 rows) + +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(2 rows) + +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 +(4 rows) + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | -9 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(3 rows) + +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(2 rows) + +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | -9 +(4 rows) + +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | -9 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(3 rows) + +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(2 rows) + +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | -9 +(4 rows) + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(5 rows) + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(5 rows) + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NULL)) +(3 rows) + +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NULL)) +(3 rows) + +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +-- end of SQLite right -> ->> operand test +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(3 rows) + +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(3 rows) + +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t + 5 | t + 6 | f + 7 | t +(7 rows) + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | f + 4 | f + 5 | f + 6 | f + 7 | t +(7 rows) + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j - j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2} + 4 | {"a": 2} + 5 | {"a": 2, "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j1` = jsonb('{"c": [4, 5, {"f": 7}]}') +(3 rows) + +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+---------------------------------+----+------+---------------------+----+-----+----+-----+---------+------------------------- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {a} | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c} | {"c": [4, 5, {"f": 7}]} + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2} | {"c": [4, 5, {"f": 7}]} + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2,f} | {"c": [4, 5, {"f": 7}]} + 5 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {c,-1} | {"c": [4, 5, {"f": 7}]} + 6 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {u,8,i} | {"c": [4, 5, {"f": 7}]} + 7 | {"a": 2} | 5 | blob | 4C17611332... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(7 rows) + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j @> j1) + Filter: ("type_JSONB".j @> "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t +(4 rows) + +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j1 <@ j) + Filter: ("type_JSONB".j <@ "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + i | r +---+--- +(0 rows) + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + QUERY PLAN +--------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + i | j | res +---+---------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 2 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 3 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 4 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 5 | {"a":2,"c":[4,5],"f":7} | + 6 | {"a":2,"c":[4,5],"f":7} | + 7 | {"a":2} | +(7 rows) + +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + i | j | res +---+---------------------------------+----- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 5 | {"a": 2, "c": [4, 5], "f": 7} | + 6 | {"a": 2, "c": [4, 5], "f": 7} | + 7 | {"a": 2} | +(7 rows) + +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j`, `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSON" WHERE ((`i` = 1)) AND (((((`j` -> 'c') -> 2) ->> 'f') IS NOT NULL)) +(3 rows) + +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---------------------------+----+-----+----+-----+-----+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | | | | | {a} | | 7 +(1 row) + +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'q'::text) -> 2) ->> 'r'::text) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSONB" WHERE ((`i` = 1)) AND (((((json(`j`) -> 'q') -> 2) ->> 'r') IS NOT NULL)) +(3 rows) + +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---+----+-----+----+-----+---+----+----- +(0 rows) + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Update on public."type_JSON" + -> Foreign Update on public."type_JSON" + SQLite query: UPDATE main."type_JSON" SET `j` = json('{"q":[4,5,{"r":7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; + i | j | ot | ot1 | oi | oi1 | q | j1 +---+---------------------+----+-----+----+-----+-----+---- + 1 | {"q":[4,5,{"r":7}]} | | | | | {a} | +(1 row) + +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j` = jsonb('{"q": [4, 5, {"r": 7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+-------------------------+----+------+---------------------+----+-----+----+-----+-----+------------------------- + 1 | {"q": [4, 5, {"r": 7}]} | 14 | blob | CC0C17719B133413... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(1 row) + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; + count +------- + 344 +(1 row) + +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'genus') = 'Quercus')) +(3 rows) + +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | +(2 rows) + +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + QUERY PLAN +--------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + Filter: (((json_osm_test.t ->> 'height'::text))::double precision = '15'::double precision) + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" +(4 rows) + +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + wkt | osm_type | osm_id | t | way_nodes +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212))) | relation | 6636665 | {"name":"Южный корпус","height":"15","roof:shape":"pyramidal","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C"} | + SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209))) | relation | 14572597 | {"height":"15","roof:shape":"gabled","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C","roof:orientation":"across"} | +(2 rows) + +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'deciduous')) +(3 rows) + +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + wkt | osm_type | osm_id | t | way_nodes +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4527994 59.6847007) | node | 8566916332 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528945 59.6847497) | node | 8566916333 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4525278 59.685471) | node | 8895996643 | {"genus":"Tilia","height":"6","natural":"tree","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6851265) | node | 8899249773 | {"genus":"Malus","taxon":"Malus niedzwetzkyana","height":"5","natural":"tree","genus:ru":"Яблоня","taxon:ru":"Яблоня Недзвецкого","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4533043 59.6851928) | node | 8899249779 | {"height":"4","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4531527 59.685139) | node | 8899299127 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4532426 59.6850926) | node | 8902082171 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532694 59.6851157) | node | 8902082172 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6849004) | node | 8905335424 | {"genus":"Prunus","taxon":"Prunus sachalinensis","height":"5","natural":"tree","genus:ru":"Вишня","taxon:ru":"Вишня сахалинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4534776 59.6848679) | node | 8905335426 | {"genus":"Rhamnus","taxon":"Rhamnus cathartica","height":"4","natural":"tree","genus:ru":"Жостер","taxon:ru":"Жостер слабительный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532466 59.6848527) | node | 8905335431 | {"genus":"Ginkgo","taxon":"Ginkgo biloba","height":"2.5","natural":"tree","genus:ru":"Гингко","taxon:ru":"Гинкго двулопастный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"label"} | + SRID=4326;POINT(30.4532392 59.6848902) | node | 8905335469 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963) | way | 871154683 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board","species:wikidata":"Q162750"} | {8114975041,8899249805,8899249804,8899249803,8899249802,8114975042} + SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8114975046,8114975047,8906857474,8906857473,8114975046} + SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256) | way | 922854851 | {"height":"8","natural":"tree_row","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {5002059748,5002059751} + SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274))) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996549,8895996548,8895996547,8895996546,8895996549} + SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996553,8895996552,8895996551,8895996550,8895996553} + SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962) | way | 961717608 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622} + SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153) | way | 961717609 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636} + SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249763,8899249762,8899249761,8899249760,8899249759,8899249763} + SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425) | way | 962062989 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.5","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8899249781,8899249780} + SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792} + SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789) | way | 962062992 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","source:taxon":"board","species:wikidata":"Q162750"} | {8899249807,8899249801,8899249800,8899249799,8899249798,8899249806} + SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816} + SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126} + SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150} + SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158} + SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082032,8902082031,8902082030,8902082029,8902082032} + SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038} + SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082047,8902082046,8902082045,8902082044,8902082043,8902082047} + SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054} + SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082059,8902082058,8902082057,8902082056,8902082059} + SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082070,8902082069,8902082068,8902082067,8902082066,8902082070} + SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082080,8902082079,8902082078,8902082077,8902082076,8902082080} + SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082084,8902082083,8902082082,8902082081,8902082084} + SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090} + SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096} + SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102} + SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108} + SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109} + SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120} + SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126} + SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132} + SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167} + SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682} + SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992687,8904992686,8904992685,8904992684,8904992683,8904992687} + SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992691,8904992690,8904992689,8904992688,8904992691} + SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699} + SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335435,8905335434,8905335433,8905335432,8905335435} + SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335439,8905335438,8905335437,8905335436,8905335439} + SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335444,8905335443,8905335442,8905335441,8905335440,8905335444} + SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454} + SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335458,8905335457,8905335456,8905335455,8905335458} + SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467} + SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8905558227,8905558226,8906857476,8906857475,8905558227} + SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664) | way | 962869359 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.7","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857452,8906857451} + SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461} + SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114))) | relation | 12922491 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488))) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713))) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974))) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013))) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789))) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728))) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532))) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813))) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668))) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691))) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918))) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544))) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184))) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275))) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682))) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078))) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233))) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005))) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902))) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505))) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024))) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515))) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599))) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727))) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083))) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248))) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711))) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246))) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335))) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485))) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511))) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431))) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025))) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632))) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308))) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573))) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448))) | relation | 12933782 | {"ref":"5","name":"Кенконс","genus":"Tilia","name:en":"The Quincunx","natural":"wood","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675))) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399))) | relation | 12932608 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | +(100 rows) + +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'evergreen')) +(3 rows) + +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529784 59.6853519) | node | 8895996426 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4529255 59.6853861) | node | 8895996427 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4530089 59.6850564) | node | 8902082048 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4529982 59.685072) | node | 8902082055 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4530213 59.6850872) | node | 8902082060 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4531977 59.6851532) | node | 8902082074 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.453207 59.6851336) | node | 8902082075 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4533998 59.6848611) | node | 8905335425 | {"genus":"Buxus","taxon":"Buxus sempervirens","height":"1","natural":"shrub","genus:ru":"Самшит","taxon:ru":"Самшит вечнозелёный","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4533874 59.6849671) | node | 8905335429 | {"genus":"Juniperus","taxon":"Juniperus sabina","height":"0.5","natural":"shrub","genus:ru":"Можжевельник","taxon:ru":"Можжевельник казацкий","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4531319 59.6849356) | node | 8905335430 | {"genus":"Picea","taxon":"Picea abies","height":"0.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель европейская","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | +(10 rows) + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'start_date') = 'C18')) +(3 rows) + +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4532025 59.6850113) | node | 1738381537 | {"height":"1.5","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","description":"Ваза в дендрарии Собственного садика","artwork_type":"vase"} | + SRID=4326;POINT(30.4529561 59.6848095) | node | 8114975053 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528946 59.6848042) | node | 8114975054 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528732 59.6848762) | node | 8114975055 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529364 59.6848802) | node | 8114975056 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528444 59.6851765) | node | 8289295956 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527798 59.6851726) | node | 8289295957 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528665 59.6850957) | node | 8289295958 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528046 59.685091) | node | 8289295959 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528947 59.6850172) | node | 8289295960 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528301 59.6850118) | node | 8289295961 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529101 59.6849636) | node | 8289295962 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528496 59.684959) | node | 8289295963 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528359 59.6852187) | node | 8331430659 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527605 59.685213) | node | 8331430660 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | +(15 rows) + +--Testcase 413: +DELETE FROM json_osm_test; +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_JSON" +drop cascades to foreign table "type_JSONB" +drop cascades to foreign table "type_JSONB+" +drop cascades to foreign table json_osm_test diff --git a/expected/13.15/types/macaddr.out b/expected/13.15/types/macaddr.out index 21e6c11d..daf8b87a 100644 --- a/expected/13.15/types/macaddr.out +++ b/expected/13.15/types/macaddr.out @@ -840,7 +840,7 @@ ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type ' --Testcase 158: ERR - primary key INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDRpk"; diff --git a/expected/13.15/types/macaddr8.out b/expected/13.15/types/macaddr8.out index cc6ae555..cdc2e84e 100644 --- a/expected/13.15/types/macaddr8.out +++ b/expected/13.15/types/macaddr8.out @@ -841,7 +841,7 @@ ERROR: option "column_type" provided more than once --Testcase 158: ERR - primary key INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDR8pk"; diff --git a/expected/13.15/types/uuid.out b/expected/13.15/types/uuid.out index 2f16427a..15238843 100644 --- a/expected/13.15/types/uuid.out +++ b/expected/13.15/types/uuid.out @@ -522,7 +522,7 @@ SELECT * FROM "type_UUIDpk"; --Testcase 105: ERR - primary key INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) --Testcase 106: ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); diff --git a/expected/14.12/extra/insert.out b/expected/14.12/extra/insert.out index ae646902..7eb38134 100644 --- a/expected/14.12/extra/insert.out +++ b/expected/14.12/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 19 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/14.12/extra/sqlite_fdw_post.out b/expected/14.12/extra/sqlite_fdw_post.out index bcd7c3d4..ae6dc0b6 100644 --- a/expected/14.12/extra/sqlite_fdw_post.out +++ b/expected/14.12/extra/sqlite_fdw_post.out @@ -6565,7 +6565,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6576,12 +6576,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -6987,12 +6987,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/14.12/gis_no/auto_import.out b/expected/14.12/gis_no/auto_import.out new file mode 100644 index 00000000..c293b864 --- /dev/null +++ b/expected/14.12/gis_no/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/gis_no/type.out b/expected/14.12/gis_no/type.out new file mode 100644 index 00000000..a5f43f4d --- /dev/null +++ b/expected/14.12/gis_no/type.out @@ -0,0 +1,537 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/gis_ok/auto_import.out b/expected/14.12/gis_ok/auto_import.out new file mode 100644 index 00000000..ec81e744 --- /dev/null +++ b/expected/14.12/gis_ok/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/type_nogis.out b/expected/14.12/gis_ok/type.out similarity index 86% rename from expected/15.7/type_nogis.out rename to expected/14.12/gis_ok/type.out index 9080ee38..c5eccfaf 100644 --- a/expected/15.7/type_nogis.out +++ b/expected/14.12/gis_ok/type.out @@ -7,6 +7,8 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 46: CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 47: +CREATE EXTENSION postgis; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -287,10 +289,10 @@ INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); --Testcase 56 SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} (2 rows) --Testcase 57 @@ -495,7 +497,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +516,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf @@ -531,61 +533,7 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf -Infinity (4 rows) ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/14.12/libsqlite.out b/expected/14.12/libsqlite.out new file mode 100644 index 00000000..087bfd53 --- /dev/null +++ b/expected/14.12/libsqlite.out @@ -0,0 +1,30 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); + sqlite_fdw_sqlite_version +--------------------------- + 3049000 +(1 row) + +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); + length +-------- + 84 +(1 row) + +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + sqlite_fdw_sqlite_code_source +-------------------------------------------------------------------------------------- + 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde +(1 row) + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/sqlite_fdw.out b/expected/14.12/sqlite_fdw.out index 2e0da686..afaec02c 100644 --- a/expected/14.12/sqlite_fdw.out +++ b/expected/14.12/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; @@ -1444,16 +1444,18 @@ SELECT * FROM noprimary; --get version --Testcase 153: \df sqlite* - List of functions - Schema | Name | Result data type | Argument data types | Type ---------+----------------------------+------------------+-----------------------------------------+------ - public | sqlite_fdw_disconnect | boolean | text | func - public | sqlite_fdw_disconnect_all | boolean | | func - public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func - public | sqlite_fdw_handler | fdw_handler | | func - public | sqlite_fdw_validator | void | text[], oid | func - public | sqlite_fdw_version | integer | | func -(6 rows) + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+-------------------------------+------------------+-----------------------------------------+------ + public | sqlite_fdw_disconnect | boolean | text | func + public | sqlite_fdw_disconnect_all | boolean | | func + public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func + public | sqlite_fdw_handler | fdw_handler | | func + public | sqlite_fdw_sqlite_code_source | text | | func + public | sqlite_fdw_sqlite_version | integer | | func + public | sqlite_fdw_validator | void | text[], oid | func + public | sqlite_fdw_version | integer | | func +(8 rows) --Testcase 154: SELECT * FROM public.sqlite_fdw_version(); diff --git a/expected/14.12/type_postgis.out b/expected/14.12/type_postgis.out deleted file mode 100644 index a7c72dab..00000000 --- a/expected/14.12/type_postgis.out +++ /dev/null @@ -1,593 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/14.12/types/bool.out b/expected/14.12/types/bool.out index ccb740e5..814110a1 100644 --- a/expected/14.12/types/bool.out +++ b/expected/14.12/types/bool.out @@ -239,7 +239,7 @@ INSERT INTO "type_BOOLEANpk" VALUES (FALSE); --Testcase 44: ERR - primary key INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) --Testcase 45: DELETE FROM "type_BOOLEANpk"; diff --git a/expected/14.12/types/json.out b/expected/14.12/types/json.out new file mode 100644 index 00000000..68c6700d --- /dev/null +++ b/expected/14.12/types/json.out @@ -0,0 +1,3164 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + i | tx +---+--------------------- + 1 | CC2B173501176113... + 2 | CB2A233131233232... + 3 | CC1C17613778797A... + 4 | CC11176100276132... + 5 | CB13133900133713... + 6 | CB2A35302E303531... +(6 rows) + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSON" +(3 rows) + +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | null + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j -> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | null | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j ->> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-----+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } +(3 rows) + +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} +(3 rows) + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } +(2 rows) + +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} +(2 rows) + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | null + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | null +(6 rows) + +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | null +(6 rows) + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | +(6 rows) + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(3 rows) + +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(3 rows) + +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+--------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] +(1 row) + +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] +(1 row) + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | a | null + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | a | + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + i | j | ot | res +---+----------------------------------------------------------------------------------------------------+----+------------------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c | [4, 5, {"f": 7}] + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 1 | + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a | xyz + 4 | {"a": null, "a2": 2, "a22": 22.0} | a | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1 | +(6 rows) + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a + 4 | {"a":null, "a22":22.0, "a2":2 } | a +(3 rows) + +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | a +(3 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a +(2 rows) + +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a +(2 rows) + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | null +(6 rows) + +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | null +(6 rows) + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | +(6 rows) + +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | +(6 rows) + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+-----------------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 +(3 rows) + +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 +(3 rows) + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+---------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 +(2 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 +(2 rows) + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(3 rows) + +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(2 rows) + +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 +(4 rows) + +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(3 rows) + +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(2 rows) + +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 +(4 rows) + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | -9 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(3 rows) + +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(2 rows) + +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | -9 +(4 rows) + +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | -9 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(3 rows) + +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(2 rows) + +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | -9 +(4 rows) + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(5 rows) + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(5 rows) + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NULL)) +(3 rows) + +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NULL)) +(3 rows) + +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +-- end of SQLite right -> ->> operand test +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(3 rows) + +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(3 rows) + +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t + 5 | t + 6 | f + 7 | t +(7 rows) + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | f + 4 | f + 5 | f + 6 | f + 7 | t +(7 rows) + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j - j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2} + 4 | {"a": 2} + 5 | {"a": 2, "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j1` = jsonb('{"c": [4, 5, {"f": 7}]}') +(3 rows) + +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+---------------------------------+----+------+---------------------+----+-----+----+-----+---------+------------------------- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {a} | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c} | {"c": [4, 5, {"f": 7}]} + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2} | {"c": [4, 5, {"f": 7}]} + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2,f} | {"c": [4, 5, {"f": 7}]} + 5 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {c,-1} | {"c": [4, 5, {"f": 7}]} + 6 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {u,8,i} | {"c": [4, 5, {"f": 7}]} + 7 | {"a": 2} | 5 | blob | 4C17611332... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(7 rows) + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j @> j1) + Filter: ("type_JSONB".j @> "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t +(4 rows) + +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j1 <@ j) + Filter: ("type_JSONB".j <@ "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + i | r +---+--- +(0 rows) + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + QUERY PLAN +--------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + i | j | res +---+---------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 2 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 3 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 4 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 5 | {"a":2,"c":[4,5],"f":7} | + 6 | {"a":2,"c":[4,5],"f":7} | + 7 | {"a":2} | +(7 rows) + +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + i | j | res +---+---------------------------------+----- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 5 | {"a": 2, "c": [4, 5], "f": 7} | + 6 | {"a": 2, "c": [4, 5], "f": 7} | + 7 | {"a": 2} | +(7 rows) + +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j`, `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSON" WHERE ((`i` = 1)) AND (((((`j` -> 'c') -> 2) ->> 'f') IS NOT NULL)) +(3 rows) + +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---------------------------+----+-----+----+-----+-----+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | | | | | {a} | | 7 +(1 row) + +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'q'::text) -> 2) ->> 'r'::text) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSONB" WHERE ((`i` = 1)) AND (((((json(`j`) -> 'q') -> 2) ->> 'r') IS NOT NULL)) +(3 rows) + +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---+----+-----+----+-----+---+----+----- +(0 rows) + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Update on public."type_JSON" + -> Foreign Update on public."type_JSON" + SQLite query: UPDATE main."type_JSON" SET `j` = json('{"q":[4,5,{"r":7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; + i | j | ot | ot1 | oi | oi1 | q | j1 +---+---------------------+----+-----+----+-----+-----+---- + 1 | {"q":[4,5,{"r":7}]} | | | | | {a} | +(1 row) + +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j` = jsonb('{"q": [4, 5, {"r": 7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+-------------------------+----+------+---------------------+----+-----+----+-----+-----+------------------------- + 1 | {"q": [4, 5, {"r": 7}]} | 14 | blob | CC0C17719B133413... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(1 row) + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; + count +------- + 344 +(1 row) + +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'genus') = 'Quercus')) +(3 rows) + +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | +(2 rows) + +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + QUERY PLAN +--------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + Filter: (((json_osm_test.t ->> 'height'::text))::double precision = '15'::double precision) + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" +(4 rows) + +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + wkt | osm_type | osm_id | t | way_nodes +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212))) | relation | 6636665 | {"name":"Южный корпус","height":"15","roof:shape":"pyramidal","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C"} | + SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209))) | relation | 14572597 | {"height":"15","roof:shape":"gabled","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C","roof:orientation":"across"} | +(2 rows) + +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'deciduous')) +(3 rows) + +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + wkt | osm_type | osm_id | t | way_nodes +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4527994 59.6847007) | node | 8566916332 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528945 59.6847497) | node | 8566916333 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4525278 59.685471) | node | 8895996643 | {"genus":"Tilia","height":"6","natural":"tree","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6851265) | node | 8899249773 | {"genus":"Malus","taxon":"Malus niedzwetzkyana","height":"5","natural":"tree","genus:ru":"Яблоня","taxon:ru":"Яблоня Недзвецкого","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4533043 59.6851928) | node | 8899249779 | {"height":"4","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4531527 59.685139) | node | 8899299127 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4532426 59.6850926) | node | 8902082171 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532694 59.6851157) | node | 8902082172 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6849004) | node | 8905335424 | {"genus":"Prunus","taxon":"Prunus sachalinensis","height":"5","natural":"tree","genus:ru":"Вишня","taxon:ru":"Вишня сахалинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4534776 59.6848679) | node | 8905335426 | {"genus":"Rhamnus","taxon":"Rhamnus cathartica","height":"4","natural":"tree","genus:ru":"Жостер","taxon:ru":"Жостер слабительный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532466 59.6848527) | node | 8905335431 | {"genus":"Ginkgo","taxon":"Ginkgo biloba","height":"2.5","natural":"tree","genus:ru":"Гингко","taxon:ru":"Гинкго двулопастный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"label"} | + SRID=4326;POINT(30.4532392 59.6848902) | node | 8905335469 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963) | way | 871154683 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board","species:wikidata":"Q162750"} | {8114975041,8899249805,8899249804,8899249803,8899249802,8114975042} + SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8114975046,8114975047,8906857474,8906857473,8114975046} + SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256) | way | 922854851 | {"height":"8","natural":"tree_row","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {5002059748,5002059751} + SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274))) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996549,8895996548,8895996547,8895996546,8895996549} + SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996553,8895996552,8895996551,8895996550,8895996553} + SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962) | way | 961717608 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622} + SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153) | way | 961717609 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636} + SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249763,8899249762,8899249761,8899249760,8899249759,8899249763} + SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425) | way | 962062989 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.5","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8899249781,8899249780} + SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792} + SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789) | way | 962062992 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","source:taxon":"board","species:wikidata":"Q162750"} | {8899249807,8899249801,8899249800,8899249799,8899249798,8899249806} + SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816} + SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126} + SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150} + SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158} + SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082032,8902082031,8902082030,8902082029,8902082032} + SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038} + SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082047,8902082046,8902082045,8902082044,8902082043,8902082047} + SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054} + SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082059,8902082058,8902082057,8902082056,8902082059} + SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082070,8902082069,8902082068,8902082067,8902082066,8902082070} + SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082080,8902082079,8902082078,8902082077,8902082076,8902082080} + SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082084,8902082083,8902082082,8902082081,8902082084} + SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090} + SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096} + SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102} + SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108} + SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109} + SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120} + SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126} + SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132} + SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167} + SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682} + SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992687,8904992686,8904992685,8904992684,8904992683,8904992687} + SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992691,8904992690,8904992689,8904992688,8904992691} + SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699} + SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335435,8905335434,8905335433,8905335432,8905335435} + SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335439,8905335438,8905335437,8905335436,8905335439} + SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335444,8905335443,8905335442,8905335441,8905335440,8905335444} + SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454} + SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335458,8905335457,8905335456,8905335455,8905335458} + SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467} + SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8905558227,8905558226,8906857476,8906857475,8905558227} + SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664) | way | 962869359 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.7","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857452,8906857451} + SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461} + SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114))) | relation | 12922491 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488))) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713))) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974))) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013))) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789))) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728))) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532))) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813))) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668))) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691))) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918))) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544))) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184))) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275))) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682))) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078))) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233))) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005))) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902))) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505))) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024))) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515))) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599))) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727))) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083))) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248))) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711))) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246))) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335))) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485))) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511))) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431))) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025))) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632))) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308))) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573))) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448))) | relation | 12933782 | {"ref":"5","name":"Кенконс","genus":"Tilia","name:en":"The Quincunx","natural":"wood","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675))) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399))) | relation | 12932608 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | +(100 rows) + +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'evergreen')) +(3 rows) + +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529784 59.6853519) | node | 8895996426 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4529255 59.6853861) | node | 8895996427 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4530089 59.6850564) | node | 8902082048 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4529982 59.685072) | node | 8902082055 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4530213 59.6850872) | node | 8902082060 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4531977 59.6851532) | node | 8902082074 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.453207 59.6851336) | node | 8902082075 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4533998 59.6848611) | node | 8905335425 | {"genus":"Buxus","taxon":"Buxus sempervirens","height":"1","natural":"shrub","genus:ru":"Самшит","taxon:ru":"Самшит вечнозелёный","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4533874 59.6849671) | node | 8905335429 | {"genus":"Juniperus","taxon":"Juniperus sabina","height":"0.5","natural":"shrub","genus:ru":"Можжевельник","taxon:ru":"Можжевельник казацкий","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4531319 59.6849356) | node | 8905335430 | {"genus":"Picea","taxon":"Picea abies","height":"0.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель европейская","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | +(10 rows) + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'start_date') = 'C18')) +(3 rows) + +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4532025 59.6850113) | node | 1738381537 | {"height":"1.5","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","description":"Ваза в дендрарии Собственного садика","artwork_type":"vase"} | + SRID=4326;POINT(30.4529561 59.6848095) | node | 8114975053 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528946 59.6848042) | node | 8114975054 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528732 59.6848762) | node | 8114975055 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529364 59.6848802) | node | 8114975056 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528444 59.6851765) | node | 8289295956 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527798 59.6851726) | node | 8289295957 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528665 59.6850957) | node | 8289295958 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528046 59.685091) | node | 8289295959 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528947 59.6850172) | node | 8289295960 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528301 59.6850118) | node | 8289295961 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529101 59.6849636) | node | 8289295962 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528496 59.684959) | node | 8289295963 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528359 59.6852187) | node | 8331430659 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527605 59.685213) | node | 8331430660 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | +(15 rows) + +--Testcase 413: +DELETE FROM json_osm_test; +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_JSON" +drop cascades to foreign table "type_JSONB" +drop cascades to foreign table "type_JSONB+" +drop cascades to foreign table json_osm_test diff --git a/expected/14.12/types/macaddr.out b/expected/14.12/types/macaddr.out index e3f33b73..286573dd 100644 --- a/expected/14.12/types/macaddr.out +++ b/expected/14.12/types/macaddr.out @@ -843,7 +843,7 @@ ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type ' --Testcase 158: ERR - primary key INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDRpk"; diff --git a/expected/14.12/types/macaddr8.out b/expected/14.12/types/macaddr8.out index 77e0f0ca..e367ee36 100644 --- a/expected/14.12/types/macaddr8.out +++ b/expected/14.12/types/macaddr8.out @@ -844,7 +844,7 @@ ERROR: option "column_type" provided more than once --Testcase 158: ERR - primary key INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDR8pk"; diff --git a/expected/14.12/types/uuid.out b/expected/14.12/types/uuid.out index 35bf1e87..35a2d86c 100644 --- a/expected/14.12/types/uuid.out +++ b/expected/14.12/types/uuid.out @@ -524,7 +524,7 @@ SELECT * FROM "type_UUIDpk"; --Testcase 105: ERR - primary key INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) --Testcase 106: ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); diff --git a/expected/15.7/extra/insert.out b/expected/15.7/extra/insert.out index f73c0619..c11ca213 100644 --- a/expected/15.7/extra/insert.out +++ b/expected/15.7/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 19 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/15.7/extra/sqlite_fdw_post.out b/expected/15.7/extra/sqlite_fdw_post.out index 0b5fe4dc..e1cb3eb9 100644 --- a/expected/15.7/extra/sqlite_fdw_post.out +++ b/expected/15.7/extra/sqlite_fdw_post.out @@ -6858,7 +6858,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6869,12 +6869,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -7280,12 +7280,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/15.7/gis_no/auto_import.out b/expected/15.7/gis_no/auto_import.out new file mode 100644 index 00000000..c293b864 --- /dev/null +++ b/expected/15.7/gis_no/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/gis_no/type.out b/expected/15.7/gis_no/type.out new file mode 100644 index 00000000..a5f43f4d --- /dev/null +++ b/expected/15.7/gis_no/type.out @@ -0,0 +1,537 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/gis_ok/auto_import.out b/expected/15.7/gis_ok/auto_import.out new file mode 100644 index 00000000..ec81e744 --- /dev/null +++ b/expected/15.7/gis_ok/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/type_nogis.out b/expected/15.7/gis_ok/type.out similarity index 86% rename from expected/14.12/type_nogis.out rename to expected/15.7/gis_ok/type.out index 9080ee38..c5eccfaf 100644 --- a/expected/14.12/type_nogis.out +++ b/expected/15.7/gis_ok/type.out @@ -7,6 +7,8 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 46: CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 47: +CREATE EXTENSION postgis; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -287,10 +289,10 @@ INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); --Testcase 56 SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} (2 rows) --Testcase 57 @@ -495,7 +497,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +516,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf @@ -531,61 +533,7 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf -Infinity (4 rows) ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/15.7/libsqlite.out b/expected/15.7/libsqlite.out new file mode 100644 index 00000000..087bfd53 --- /dev/null +++ b/expected/15.7/libsqlite.out @@ -0,0 +1,30 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); + sqlite_fdw_sqlite_version +--------------------------- + 3049000 +(1 row) + +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); + length +-------- + 84 +(1 row) + +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + sqlite_fdw_sqlite_code_source +-------------------------------------------------------------------------------------- + 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde +(1 row) + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/sqlite_fdw.out b/expected/15.7/sqlite_fdw.out index 301592c8..953bafc7 100644 --- a/expected/15.7/sqlite_fdw.out +++ b/expected/15.7/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; @@ -1444,16 +1444,18 @@ SELECT * FROM noprimary; --get version --Testcase 153: \df sqlite* - List of functions - Schema | Name | Result data type | Argument data types | Type ---------+----------------------------+------------------+-----------------------------------------+------ - public | sqlite_fdw_disconnect | boolean | text | func - public | sqlite_fdw_disconnect_all | boolean | | func - public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func - public | sqlite_fdw_handler | fdw_handler | | func - public | sqlite_fdw_validator | void | text[], oid | func - public | sqlite_fdw_version | integer | | func -(6 rows) + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+-------------------------------+------------------+-----------------------------------------+------ + public | sqlite_fdw_disconnect | boolean | text | func + public | sqlite_fdw_disconnect_all | boolean | | func + public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func + public | sqlite_fdw_handler | fdw_handler | | func + public | sqlite_fdw_sqlite_code_source | text | | func + public | sqlite_fdw_sqlite_version | integer | | func + public | sqlite_fdw_validator | void | text[], oid | func + public | sqlite_fdw_version | integer | | func +(8 rows) --Testcase 154: SELECT * FROM public.sqlite_fdw_version(); diff --git a/expected/15.7/type_postgis.out b/expected/15.7/type_postgis.out deleted file mode 100644 index a7c72dab..00000000 --- a/expected/15.7/type_postgis.out +++ /dev/null @@ -1,593 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/15.7/types/bool.out b/expected/15.7/types/bool.out index ccb740e5..814110a1 100644 --- a/expected/15.7/types/bool.out +++ b/expected/15.7/types/bool.out @@ -239,7 +239,7 @@ INSERT INTO "type_BOOLEANpk" VALUES (FALSE); --Testcase 44: ERR - primary key INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) --Testcase 45: DELETE FROM "type_BOOLEANpk"; diff --git a/expected/15.7/types/json.out b/expected/15.7/types/json.out new file mode 100644 index 00000000..68c6700d --- /dev/null +++ b/expected/15.7/types/json.out @@ -0,0 +1,3164 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + i | tx +---+--------------------- + 1 | CC2B173501176113... + 2 | CB2A233131233232... + 3 | CC1C17613778797A... + 4 | CC11176100276132... + 5 | CB13133900133713... + 6 | CB2A35302E303531... +(6 rows) + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSON" +(3 rows) + +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | null + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j -> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | null | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j ->> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-----+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } +(3 rows) + +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} +(3 rows) + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } +(2 rows) + +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} +(2 rows) + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | null + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | null +(6 rows) + +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | null +(6 rows) + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | +(6 rows) + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(3 rows) + +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(3 rows) + +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+--------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] +(1 row) + +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] +(1 row) + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | a | null + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | a | + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + i | j | ot | res +---+----------------------------------------------------------------------------------------------------+----+------------------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c | [4, 5, {"f": 7}] + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 1 | + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a | xyz + 4 | {"a": null, "a2": 2, "a22": 22.0} | a | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1 | +(6 rows) + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a + 4 | {"a":null, "a22":22.0, "a2":2 } | a +(3 rows) + +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | a +(3 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a +(2 rows) + +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a +(2 rows) + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | null +(6 rows) + +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | null +(6 rows) + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | +(6 rows) + +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | +(6 rows) + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+-----------------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 +(3 rows) + +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 +(3 rows) + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+---------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 +(2 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 +(2 rows) + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(3 rows) + +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(2 rows) + +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 +(4 rows) + +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(3 rows) + +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(2 rows) + +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 +(4 rows) + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | -9 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(3 rows) + +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(2 rows) + +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | -9 +(4 rows) + +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | -9 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(3 rows) + +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(2 rows) + +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | -9 +(4 rows) + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(5 rows) + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(5 rows) + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NULL)) +(3 rows) + +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NULL)) +(3 rows) + +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +-- end of SQLite right -> ->> operand test +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(3 rows) + +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(3 rows) + +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t + 5 | t + 6 | f + 7 | t +(7 rows) + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | f + 4 | f + 5 | f + 6 | f + 7 | t +(7 rows) + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j - j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2} + 4 | {"a": 2} + 5 | {"a": 2, "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j1` = jsonb('{"c": [4, 5, {"f": 7}]}') +(3 rows) + +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+---------------------------------+----+------+---------------------+----+-----+----+-----+---------+------------------------- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {a} | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c} | {"c": [4, 5, {"f": 7}]} + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2} | {"c": [4, 5, {"f": 7}]} + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2,f} | {"c": [4, 5, {"f": 7}]} + 5 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {c,-1} | {"c": [4, 5, {"f": 7}]} + 6 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {u,8,i} | {"c": [4, 5, {"f": 7}]} + 7 | {"a": 2} | 5 | blob | 4C17611332... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(7 rows) + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j @> j1) + Filter: ("type_JSONB".j @> "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t +(4 rows) + +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j1 <@ j) + Filter: ("type_JSONB".j <@ "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + i | r +---+--- +(0 rows) + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + QUERY PLAN +--------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + i | j | res +---+---------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 2 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 3 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 4 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 5 | {"a":2,"c":[4,5],"f":7} | + 6 | {"a":2,"c":[4,5],"f":7} | + 7 | {"a":2} | +(7 rows) + +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + i | j | res +---+---------------------------------+----- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 5 | {"a": 2, "c": [4, 5], "f": 7} | + 6 | {"a": 2, "c": [4, 5], "f": 7} | + 7 | {"a": 2} | +(7 rows) + +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j`, `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSON" WHERE ((`i` = 1)) AND (((((`j` -> 'c') -> 2) ->> 'f') IS NOT NULL)) +(3 rows) + +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---------------------------+----+-----+----+-----+-----+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | | | | | {a} | | 7 +(1 row) + +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'q'::text) -> 2) ->> 'r'::text) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSONB" WHERE ((`i` = 1)) AND (((((json(`j`) -> 'q') -> 2) ->> 'r') IS NOT NULL)) +(3 rows) + +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---+----+-----+----+-----+---+----+----- +(0 rows) + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Update on public."type_JSON" + -> Foreign Update on public."type_JSON" + SQLite query: UPDATE main."type_JSON" SET `j` = json('{"q":[4,5,{"r":7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; + i | j | ot | ot1 | oi | oi1 | q | j1 +---+---------------------+----+-----+----+-----+-----+---- + 1 | {"q":[4,5,{"r":7}]} | | | | | {a} | +(1 row) + +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j` = jsonb('{"q": [4, 5, {"r": 7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+-------------------------+----+------+---------------------+----+-----+----+-----+-----+------------------------- + 1 | {"q": [4, 5, {"r": 7}]} | 14 | blob | CC0C17719B133413... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(1 row) + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; + count +------- + 344 +(1 row) + +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'genus') = 'Quercus')) +(3 rows) + +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | +(2 rows) + +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + QUERY PLAN +--------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + Filter: (((json_osm_test.t ->> 'height'::text))::double precision = '15'::double precision) + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" +(4 rows) + +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + wkt | osm_type | osm_id | t | way_nodes +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212))) | relation | 6636665 | {"name":"Южный корпус","height":"15","roof:shape":"pyramidal","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C"} | + SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209))) | relation | 14572597 | {"height":"15","roof:shape":"gabled","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C","roof:orientation":"across"} | +(2 rows) + +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'deciduous')) +(3 rows) + +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + wkt | osm_type | osm_id | t | way_nodes +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4527994 59.6847007) | node | 8566916332 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528945 59.6847497) | node | 8566916333 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4525278 59.685471) | node | 8895996643 | {"genus":"Tilia","height":"6","natural":"tree","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6851265) | node | 8899249773 | {"genus":"Malus","taxon":"Malus niedzwetzkyana","height":"5","natural":"tree","genus:ru":"Яблоня","taxon:ru":"Яблоня Недзвецкого","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4533043 59.6851928) | node | 8899249779 | {"height":"4","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4531527 59.685139) | node | 8899299127 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4532426 59.6850926) | node | 8902082171 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532694 59.6851157) | node | 8902082172 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6849004) | node | 8905335424 | {"genus":"Prunus","taxon":"Prunus sachalinensis","height":"5","natural":"tree","genus:ru":"Вишня","taxon:ru":"Вишня сахалинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4534776 59.6848679) | node | 8905335426 | {"genus":"Rhamnus","taxon":"Rhamnus cathartica","height":"4","natural":"tree","genus:ru":"Жостер","taxon:ru":"Жостер слабительный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532466 59.6848527) | node | 8905335431 | {"genus":"Ginkgo","taxon":"Ginkgo biloba","height":"2.5","natural":"tree","genus:ru":"Гингко","taxon:ru":"Гинкго двулопастный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"label"} | + SRID=4326;POINT(30.4532392 59.6848902) | node | 8905335469 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963) | way | 871154683 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board","species:wikidata":"Q162750"} | {8114975041,8899249805,8899249804,8899249803,8899249802,8114975042} + SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8114975046,8114975047,8906857474,8906857473,8114975046} + SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256) | way | 922854851 | {"height":"8","natural":"tree_row","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {5002059748,5002059751} + SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274))) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996549,8895996548,8895996547,8895996546,8895996549} + SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996553,8895996552,8895996551,8895996550,8895996553} + SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962) | way | 961717608 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622} + SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153) | way | 961717609 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636} + SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249763,8899249762,8899249761,8899249760,8899249759,8899249763} + SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425) | way | 962062989 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.5","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8899249781,8899249780} + SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792} + SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789) | way | 962062992 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","source:taxon":"board","species:wikidata":"Q162750"} | {8899249807,8899249801,8899249800,8899249799,8899249798,8899249806} + SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816} + SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126} + SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150} + SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158} + SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082032,8902082031,8902082030,8902082029,8902082032} + SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038} + SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082047,8902082046,8902082045,8902082044,8902082043,8902082047} + SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054} + SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082059,8902082058,8902082057,8902082056,8902082059} + SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082070,8902082069,8902082068,8902082067,8902082066,8902082070} + SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082080,8902082079,8902082078,8902082077,8902082076,8902082080} + SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082084,8902082083,8902082082,8902082081,8902082084} + SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090} + SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096} + SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102} + SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108} + SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109} + SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120} + SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126} + SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132} + SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167} + SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682} + SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992687,8904992686,8904992685,8904992684,8904992683,8904992687} + SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992691,8904992690,8904992689,8904992688,8904992691} + SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699} + SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335435,8905335434,8905335433,8905335432,8905335435} + SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335439,8905335438,8905335437,8905335436,8905335439} + SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335444,8905335443,8905335442,8905335441,8905335440,8905335444} + SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454} + SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335458,8905335457,8905335456,8905335455,8905335458} + SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467} + SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8905558227,8905558226,8906857476,8906857475,8905558227} + SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664) | way | 962869359 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.7","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857452,8906857451} + SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461} + SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114))) | relation | 12922491 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488))) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713))) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974))) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013))) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789))) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728))) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532))) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813))) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668))) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691))) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918))) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544))) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184))) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275))) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682))) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078))) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233))) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005))) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902))) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505))) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024))) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515))) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599))) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727))) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083))) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248))) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711))) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246))) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335))) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485))) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511))) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431))) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025))) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632))) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308))) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573))) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448))) | relation | 12933782 | {"ref":"5","name":"Кенконс","genus":"Tilia","name:en":"The Quincunx","natural":"wood","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675))) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399))) | relation | 12932608 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | +(100 rows) + +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'evergreen')) +(3 rows) + +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529784 59.6853519) | node | 8895996426 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4529255 59.6853861) | node | 8895996427 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4530089 59.6850564) | node | 8902082048 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4529982 59.685072) | node | 8902082055 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4530213 59.6850872) | node | 8902082060 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4531977 59.6851532) | node | 8902082074 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.453207 59.6851336) | node | 8902082075 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4533998 59.6848611) | node | 8905335425 | {"genus":"Buxus","taxon":"Buxus sempervirens","height":"1","natural":"shrub","genus:ru":"Самшит","taxon:ru":"Самшит вечнозелёный","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4533874 59.6849671) | node | 8905335429 | {"genus":"Juniperus","taxon":"Juniperus sabina","height":"0.5","natural":"shrub","genus:ru":"Можжевельник","taxon:ru":"Можжевельник казацкий","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4531319 59.6849356) | node | 8905335430 | {"genus":"Picea","taxon":"Picea abies","height":"0.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель европейская","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | +(10 rows) + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'start_date') = 'C18')) +(3 rows) + +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4532025 59.6850113) | node | 1738381537 | {"height":"1.5","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","description":"Ваза в дендрарии Собственного садика","artwork_type":"vase"} | + SRID=4326;POINT(30.4529561 59.6848095) | node | 8114975053 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528946 59.6848042) | node | 8114975054 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528732 59.6848762) | node | 8114975055 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529364 59.6848802) | node | 8114975056 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528444 59.6851765) | node | 8289295956 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527798 59.6851726) | node | 8289295957 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528665 59.6850957) | node | 8289295958 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528046 59.685091) | node | 8289295959 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528947 59.6850172) | node | 8289295960 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528301 59.6850118) | node | 8289295961 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529101 59.6849636) | node | 8289295962 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528496 59.684959) | node | 8289295963 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528359 59.6852187) | node | 8331430659 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527605 59.685213) | node | 8331430660 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | +(15 rows) + +--Testcase 413: +DELETE FROM json_osm_test; +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_JSON" +drop cascades to foreign table "type_JSONB" +drop cascades to foreign table "type_JSONB+" +drop cascades to foreign table json_osm_test diff --git a/expected/15.7/types/macaddr.out b/expected/15.7/types/macaddr.out index e3f33b73..286573dd 100644 --- a/expected/15.7/types/macaddr.out +++ b/expected/15.7/types/macaddr.out @@ -843,7 +843,7 @@ ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type ' --Testcase 158: ERR - primary key INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDRpk"; diff --git a/expected/15.7/types/macaddr8.out b/expected/15.7/types/macaddr8.out index 77e0f0ca..e367ee36 100644 --- a/expected/15.7/types/macaddr8.out +++ b/expected/15.7/types/macaddr8.out @@ -844,7 +844,7 @@ ERROR: option "column_type" provided more than once --Testcase 158: ERR - primary key INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDR8pk"; diff --git a/expected/15.7/types/uuid.out b/expected/15.7/types/uuid.out index 35bf1e87..35a2d86c 100644 --- a/expected/15.7/types/uuid.out +++ b/expected/15.7/types/uuid.out @@ -524,7 +524,7 @@ SELECT * FROM "type_UUIDpk"; --Testcase 105: ERR - primary key INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) --Testcase 106: ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); diff --git a/expected/16.3/extra/insert.out b/expected/16.3/extra/insert.out index f73c0619..c11ca213 100644 --- a/expected/16.3/extra/insert.out +++ b/expected/16.3/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 19 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/16.3/extra/sqlite_fdw_post.out b/expected/16.3/extra/sqlite_fdw_post.out index 750d2207..500385b8 100644 --- a/expected/16.3/extra/sqlite_fdw_post.out +++ b/expected/16.3/extra/sqlite_fdw_post.out @@ -6954,7 +6954,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6965,12 +6965,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -7376,12 +7376,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/16.3/gis_no/auto_import.out b/expected/16.3/gis_no/auto_import.out new file mode 100644 index 00000000..c293b864 --- /dev/null +++ b/expected/16.3/gis_no/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/gis_no/type.out b/expected/16.3/gis_no/type.out new file mode 100644 index 00000000..a5f43f4d --- /dev/null +++ b/expected/16.3/gis_no/type.out @@ -0,0 +1,537 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/gis_ok/auto_import.out b/expected/16.3/gis_ok/auto_import.out new file mode 100644 index 00000000..ec81e744 --- /dev/null +++ b/expected/16.3/gis_ok/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/type_nogis.out b/expected/16.3/gis_ok/type.out similarity index 86% rename from expected/16.3/type_nogis.out rename to expected/16.3/gis_ok/type.out index 9080ee38..c5eccfaf 100644 --- a/expected/16.3/type_nogis.out +++ b/expected/16.3/gis_ok/type.out @@ -7,6 +7,8 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 46: CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 47: +CREATE EXTENSION postgis; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -287,10 +289,10 @@ INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); --Testcase 56 SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} (2 rows) --Testcase 57 @@ -495,7 +497,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +516,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf @@ -531,61 +533,7 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf -Infinity (4 rows) ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/16.3/libsqlite.out b/expected/16.3/libsqlite.out new file mode 100644 index 00000000..087bfd53 --- /dev/null +++ b/expected/16.3/libsqlite.out @@ -0,0 +1,30 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); + sqlite_fdw_sqlite_version +--------------------------- + 3049000 +(1 row) + +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); + length +-------- + 84 +(1 row) + +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + sqlite_fdw_sqlite_code_source +-------------------------------------------------------------------------------------- + 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde +(1 row) + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/sqlite_fdw.out b/expected/16.3/sqlite_fdw.out index bd288cc5..82c71abe 100644 --- a/expected/16.3/sqlite_fdw.out +++ b/expected/16.3/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; @@ -1444,16 +1444,18 @@ SELECT * FROM noprimary; --get version --Testcase 153: \df sqlite* - List of functions - Schema | Name | Result data type | Argument data types | Type ---------+----------------------------+------------------+-----------------------------------------+------ - public | sqlite_fdw_disconnect | boolean | text | func - public | sqlite_fdw_disconnect_all | boolean | | func - public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func - public | sqlite_fdw_handler | fdw_handler | | func - public | sqlite_fdw_validator | void | text[], oid | func - public | sqlite_fdw_version | integer | | func -(6 rows) + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+-------------------------------+------------------+-----------------------------------------+------ + public | sqlite_fdw_disconnect | boolean | text | func + public | sqlite_fdw_disconnect_all | boolean | | func + public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func + public | sqlite_fdw_handler | fdw_handler | | func + public | sqlite_fdw_sqlite_code_source | text | | func + public | sqlite_fdw_sqlite_version | integer | | func + public | sqlite_fdw_validator | void | text[], oid | func + public | sqlite_fdw_version | integer | | func +(8 rows) --Testcase 154: SELECT * FROM public.sqlite_fdw_version(); diff --git a/expected/16.3/type_postgis.out b/expected/16.3/type_postgis.out deleted file mode 100644 index a7c72dab..00000000 --- a/expected/16.3/type_postgis.out +++ /dev/null @@ -1,593 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/16.3/types/bool.out b/expected/16.3/types/bool.out index ccb740e5..814110a1 100644 --- a/expected/16.3/types/bool.out +++ b/expected/16.3/types/bool.out @@ -239,7 +239,7 @@ INSERT INTO "type_BOOLEANpk" VALUES (FALSE); --Testcase 44: ERR - primary key INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) --Testcase 45: DELETE FROM "type_BOOLEANpk"; diff --git a/expected/16.3/types/json.out b/expected/16.3/types/json.out new file mode 100644 index 00000000..68c6700d --- /dev/null +++ b/expected/16.3/types/json.out @@ -0,0 +1,3164 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + i | tx +---+--------------------- + 1 | CC2B173501176113... + 2 | CB2A233131233232... + 3 | CC1C17613778797A... + 4 | CC11176100276132... + 5 | CB13133900133713... + 6 | CB2A35302E303531... +(6 rows) + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSON" +(3 rows) + +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | null + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j -> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | null | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j ->> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-----+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } +(3 rows) + +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} +(3 rows) + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } +(2 rows) + +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} +(2 rows) + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | null + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | null +(6 rows) + +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | null +(6 rows) + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | +(6 rows) + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(3 rows) + +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(3 rows) + +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+--------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] +(1 row) + +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] +(1 row) + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | a | null + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | a | + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + i | j | ot | res +---+----------------------------------------------------------------------------------------------------+----+------------------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c | [4, 5, {"f": 7}] + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 1 | + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a | xyz + 4 | {"a": null, "a2": 2, "a22": 22.0} | a | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1 | +(6 rows) + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a + 4 | {"a":null, "a22":22.0, "a2":2 } | a +(3 rows) + +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | a +(3 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a +(2 rows) + +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a +(2 rows) + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | null +(6 rows) + +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | null +(6 rows) + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | +(6 rows) + +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | +(6 rows) + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+-----------------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 +(3 rows) + +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 +(3 rows) + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+---------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 +(2 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 +(2 rows) + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(3 rows) + +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(2 rows) + +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 +(4 rows) + +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(3 rows) + +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(2 rows) + +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 +(4 rows) + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | -9 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(3 rows) + +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(2 rows) + +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | -9 +(4 rows) + +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | -9 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(3 rows) + +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(2 rows) + +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | -9 +(4 rows) + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(5 rows) + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(5 rows) + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NULL)) +(3 rows) + +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NULL)) +(3 rows) + +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +-- end of SQLite right -> ->> operand test +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(3 rows) + +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(3 rows) + +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t + 5 | t + 6 | f + 7 | t +(7 rows) + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | f + 4 | f + 5 | f + 6 | f + 7 | t +(7 rows) + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j - j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2} + 4 | {"a": 2} + 5 | {"a": 2, "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j1` = jsonb('{"c": [4, 5, {"f": 7}]}') +(3 rows) + +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+---------------------------------+----+------+---------------------+----+-----+----+-----+---------+------------------------- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {a} | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c} | {"c": [4, 5, {"f": 7}]} + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2} | {"c": [4, 5, {"f": 7}]} + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2,f} | {"c": [4, 5, {"f": 7}]} + 5 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {c,-1} | {"c": [4, 5, {"f": 7}]} + 6 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {u,8,i} | {"c": [4, 5, {"f": 7}]} + 7 | {"a": 2} | 5 | blob | 4C17611332... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(7 rows) + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j @> j1) + Filter: ("type_JSONB".j @> "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t +(4 rows) + +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j1 <@ j) + Filter: ("type_JSONB".j <@ "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + i | r +---+--- +(0 rows) + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + QUERY PLAN +--------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + i | j | res +---+---------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 2 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 3 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 4 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 5 | {"a":2,"c":[4,5],"f":7} | + 6 | {"a":2,"c":[4,5],"f":7} | + 7 | {"a":2} | +(7 rows) + +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + i | j | res +---+---------------------------------+----- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 5 | {"a": 2, "c": [4, 5], "f": 7} | + 6 | {"a": 2, "c": [4, 5], "f": 7} | + 7 | {"a": 2} | +(7 rows) + +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j`, `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSON" WHERE ((`i` = 1)) AND (((((`j` -> 'c') -> 2) ->> 'f') IS NOT NULL)) +(3 rows) + +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---------------------------+----+-----+----+-----+-----+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | | | | | {a} | | 7 +(1 row) + +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'q'::text) -> 2) ->> 'r'::text) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSONB" WHERE ((`i` = 1)) AND (((((json(`j`) -> 'q') -> 2) ->> 'r') IS NOT NULL)) +(3 rows) + +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---+----+-----+----+-----+---+----+----- +(0 rows) + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Update on public."type_JSON" + -> Foreign Update on public."type_JSON" + SQLite query: UPDATE main."type_JSON" SET `j` = json('{"q":[4,5,{"r":7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; + i | j | ot | ot1 | oi | oi1 | q | j1 +---+---------------------+----+-----+----+-----+-----+---- + 1 | {"q":[4,5,{"r":7}]} | | | | | {a} | +(1 row) + +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j` = jsonb('{"q": [4, 5, {"r": 7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+-------------------------+----+------+---------------------+----+-----+----+-----+-----+------------------------- + 1 | {"q": [4, 5, {"r": 7}]} | 14 | blob | CC0C17719B133413... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(1 row) + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; + count +------- + 344 +(1 row) + +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'genus') = 'Quercus')) +(3 rows) + +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | +(2 rows) + +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + QUERY PLAN +--------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + Filter: (((json_osm_test.t ->> 'height'::text))::double precision = '15'::double precision) + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" +(4 rows) + +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + wkt | osm_type | osm_id | t | way_nodes +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212))) | relation | 6636665 | {"name":"Южный корпус","height":"15","roof:shape":"pyramidal","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C"} | + SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209))) | relation | 14572597 | {"height":"15","roof:shape":"gabled","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C","roof:orientation":"across"} | +(2 rows) + +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'deciduous')) +(3 rows) + +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + wkt | osm_type | osm_id | t | way_nodes +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4527994 59.6847007) | node | 8566916332 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528945 59.6847497) | node | 8566916333 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4525278 59.685471) | node | 8895996643 | {"genus":"Tilia","height":"6","natural":"tree","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6851265) | node | 8899249773 | {"genus":"Malus","taxon":"Malus niedzwetzkyana","height":"5","natural":"tree","genus:ru":"Яблоня","taxon:ru":"Яблоня Недзвецкого","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4533043 59.6851928) | node | 8899249779 | {"height":"4","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4531527 59.685139) | node | 8899299127 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4532426 59.6850926) | node | 8902082171 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532694 59.6851157) | node | 8902082172 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6849004) | node | 8905335424 | {"genus":"Prunus","taxon":"Prunus sachalinensis","height":"5","natural":"tree","genus:ru":"Вишня","taxon:ru":"Вишня сахалинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4534776 59.6848679) | node | 8905335426 | {"genus":"Rhamnus","taxon":"Rhamnus cathartica","height":"4","natural":"tree","genus:ru":"Жостер","taxon:ru":"Жостер слабительный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532466 59.6848527) | node | 8905335431 | {"genus":"Ginkgo","taxon":"Ginkgo biloba","height":"2.5","natural":"tree","genus:ru":"Гингко","taxon:ru":"Гинкго двулопастный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"label"} | + SRID=4326;POINT(30.4532392 59.6848902) | node | 8905335469 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963) | way | 871154683 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board","species:wikidata":"Q162750"} | {8114975041,8899249805,8899249804,8899249803,8899249802,8114975042} + SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8114975046,8114975047,8906857474,8906857473,8114975046} + SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256) | way | 922854851 | {"height":"8","natural":"tree_row","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {5002059748,5002059751} + SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274))) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996549,8895996548,8895996547,8895996546,8895996549} + SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996553,8895996552,8895996551,8895996550,8895996553} + SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962) | way | 961717608 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622} + SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153) | way | 961717609 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636} + SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249763,8899249762,8899249761,8899249760,8899249759,8899249763} + SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425) | way | 962062989 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.5","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8899249781,8899249780} + SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792} + SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789) | way | 962062992 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","source:taxon":"board","species:wikidata":"Q162750"} | {8899249807,8899249801,8899249800,8899249799,8899249798,8899249806} + SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816} + SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126} + SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150} + SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158} + SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082032,8902082031,8902082030,8902082029,8902082032} + SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038} + SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082047,8902082046,8902082045,8902082044,8902082043,8902082047} + SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054} + SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082059,8902082058,8902082057,8902082056,8902082059} + SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082070,8902082069,8902082068,8902082067,8902082066,8902082070} + SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082080,8902082079,8902082078,8902082077,8902082076,8902082080} + SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082084,8902082083,8902082082,8902082081,8902082084} + SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090} + SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096} + SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102} + SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108} + SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109} + SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120} + SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126} + SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132} + SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167} + SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682} + SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992687,8904992686,8904992685,8904992684,8904992683,8904992687} + SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992691,8904992690,8904992689,8904992688,8904992691} + SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699} + SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335435,8905335434,8905335433,8905335432,8905335435} + SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335439,8905335438,8905335437,8905335436,8905335439} + SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335444,8905335443,8905335442,8905335441,8905335440,8905335444} + SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454} + SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335458,8905335457,8905335456,8905335455,8905335458} + SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467} + SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8905558227,8905558226,8906857476,8906857475,8905558227} + SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664) | way | 962869359 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.7","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857452,8906857451} + SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461} + SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114))) | relation | 12922491 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488))) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713))) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974))) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013))) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789))) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728))) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532))) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813))) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668))) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691))) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918))) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544))) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184))) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275))) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682))) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078))) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233))) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005))) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902))) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505))) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024))) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515))) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599))) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727))) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083))) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248))) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711))) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246))) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335))) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485))) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511))) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431))) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025))) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632))) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308))) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573))) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448))) | relation | 12933782 | {"ref":"5","name":"Кенконс","genus":"Tilia","name:en":"The Quincunx","natural":"wood","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675))) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399))) | relation | 12932608 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | +(100 rows) + +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'evergreen')) +(3 rows) + +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529784 59.6853519) | node | 8895996426 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4529255 59.6853861) | node | 8895996427 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4530089 59.6850564) | node | 8902082048 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4529982 59.685072) | node | 8902082055 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4530213 59.6850872) | node | 8902082060 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4531977 59.6851532) | node | 8902082074 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.453207 59.6851336) | node | 8902082075 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4533998 59.6848611) | node | 8905335425 | {"genus":"Buxus","taxon":"Buxus sempervirens","height":"1","natural":"shrub","genus:ru":"Самшит","taxon:ru":"Самшит вечнозелёный","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4533874 59.6849671) | node | 8905335429 | {"genus":"Juniperus","taxon":"Juniperus sabina","height":"0.5","natural":"shrub","genus:ru":"Можжевельник","taxon:ru":"Можжевельник казацкий","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4531319 59.6849356) | node | 8905335430 | {"genus":"Picea","taxon":"Picea abies","height":"0.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель европейская","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | +(10 rows) + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'start_date') = 'C18')) +(3 rows) + +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4532025 59.6850113) | node | 1738381537 | {"height":"1.5","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","description":"Ваза в дендрарии Собственного садика","artwork_type":"vase"} | + SRID=4326;POINT(30.4529561 59.6848095) | node | 8114975053 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528946 59.6848042) | node | 8114975054 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528732 59.6848762) | node | 8114975055 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529364 59.6848802) | node | 8114975056 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528444 59.6851765) | node | 8289295956 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527798 59.6851726) | node | 8289295957 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528665 59.6850957) | node | 8289295958 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528046 59.685091) | node | 8289295959 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528947 59.6850172) | node | 8289295960 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528301 59.6850118) | node | 8289295961 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529101 59.6849636) | node | 8289295962 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528496 59.684959) | node | 8289295963 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528359 59.6852187) | node | 8331430659 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527605 59.685213) | node | 8331430660 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | +(15 rows) + +--Testcase 413: +DELETE FROM json_osm_test; +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_JSON" +drop cascades to foreign table "type_JSONB" +drop cascades to foreign table "type_JSONB+" +drop cascades to foreign table json_osm_test diff --git a/expected/16.3/types/macaddr.out b/expected/16.3/types/macaddr.out index e3f33b73..286573dd 100644 --- a/expected/16.3/types/macaddr.out +++ b/expected/16.3/types/macaddr.out @@ -843,7 +843,7 @@ ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type ' --Testcase 158: ERR - primary key INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDRpk"; diff --git a/expected/16.3/types/macaddr8.out b/expected/16.3/types/macaddr8.out index 77e0f0ca..e367ee36 100644 --- a/expected/16.3/types/macaddr8.out +++ b/expected/16.3/types/macaddr8.out @@ -844,7 +844,7 @@ ERROR: option "column_type" provided more than once --Testcase 158: ERR - primary key INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDR8pk"; diff --git a/expected/16.3/types/uuid.out b/expected/16.3/types/uuid.out index 35bf1e87..35a2d86c 100644 --- a/expected/16.3/types/uuid.out +++ b/expected/16.3/types/uuid.out @@ -524,7 +524,7 @@ SELECT * FROM "type_UUIDpk"; --Testcase 105: ERR - primary key INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) --Testcase 106: ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); diff --git a/expected/17.0/extra/insert.out b/expected/17.0/extra/insert.out index 02e04b2c..38906b15 100644 --- a/expected/17.0/extra/insert.out +++ b/expected/17.0/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 19 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/17.0/extra/sqlite_fdw_post.out b/expected/17.0/extra/sqlite_fdw_post.out index 517ae19a..87f241c7 100644 --- a/expected/17.0/extra/sqlite_fdw_post.out +++ b/expected/17.0/extra/sqlite_fdw_post.out @@ -7277,7 +7277,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -7288,12 +7288,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -7761,12 +7761,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 19 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/17.0/gis_no/auto_import.out b/expected/17.0/gis_no/auto_import.out new file mode 100644 index 00000000..c293b864 --- /dev/null +++ b/expected/17.0/gis_no/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/gis_no/type.out b/expected/17.0/gis_no/type.out new file mode 100644 index 00000000..a5f43f4d --- /dev/null +++ b/expected/17.0/gis_no/type.out @@ -0,0 +1,537 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/gis_ok/auto_import.out b/expected/17.0/gis_ok/auto_import.out new file mode 100644 index 00000000..ec81e744 --- /dev/null +++ b/expected/17.0/gis_ok/auto_import.out @@ -0,0 +1,638 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/gis_ok/type.out b/expected/17.0/gis_ok/type.out new file mode 100644 index 00000000..c5eccfaf --- /dev/null +++ b/expected/17.0/gis_ok/type.out @@ -0,0 +1,539 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 47: +CREATE EXTENSION postgis; +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/libsqlite.out b/expected/17.0/libsqlite.out new file mode 100644 index 00000000..087bfd53 --- /dev/null +++ b/expected/17.0/libsqlite.out @@ -0,0 +1,30 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); + sqlite_fdw_sqlite_version +--------------------------- + 3049000 +(1 row) + +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); + length +-------- + 84 +(1 row) + +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + sqlite_fdw_sqlite_code_source +-------------------------------------------------------------------------------------- + 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde +(1 row) + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/sqlite_fdw.out b/expected/17.0/sqlite_fdw.out index 520f5a56..4d215851 100644 --- a/expected/17.0/sqlite_fdw.out +++ b/expected/17.0/sqlite_fdw.out @@ -568,7 +568,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -582,7 +582,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; @@ -1436,16 +1436,18 @@ SELECT * FROM noprimary; --get version --Testcase 153: \df sqlite* - List of functions - Schema | Name | Result data type | Argument data types | Type ---------+----------------------------+------------------+-----------------------------------------+------ - public | sqlite_fdw_disconnect | boolean | text | func - public | sqlite_fdw_disconnect_all | boolean | | func - public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func - public | sqlite_fdw_handler | fdw_handler | | func - public | sqlite_fdw_validator | void | text[], oid | func - public | sqlite_fdw_version | integer | | func -(6 rows) + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+-------------------------------+------------------+-----------------------------------------+------ + public | sqlite_fdw_disconnect | boolean | text | func + public | sqlite_fdw_disconnect_all | boolean | | func + public | sqlite_fdw_get_connections | SETOF record | OUT server_name text, OUT valid boolean | func + public | sqlite_fdw_handler | fdw_handler | | func + public | sqlite_fdw_sqlite_code_source | text | | func + public | sqlite_fdw_sqlite_version | integer | | func + public | sqlite_fdw_validator | void | text[], oid | func + public | sqlite_fdw_version | integer | | func +(8 rows) --Testcase 154: SELECT * FROM public.sqlite_fdw_version(); diff --git a/expected/17.0/type_nogis.out b/expected/17.0/type_nogis.out deleted file mode 100644 index 9080ee38..00000000 --- a/expected/17.0/type_nogis.out +++ /dev/null @@ -1,591 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/17.0/type_postgis.out b/expected/17.0/type_postgis.out deleted file mode 100644 index a7c72dab..00000000 --- a/expected/17.0/type_postgis.out +++ /dev/null @@ -1,593 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col --------------------------------------------------- - [1, 2, "foo", null] - {"bar": "baz", "balance": 7.77, "active": false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 19 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 55 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table department -drop cascades to foreign table employee -drop cascades to foreign table empdata -drop cascades to foreign table numbers -drop cascades to foreign table t -drop cascades to foreign table multiprimary -drop cascades to foreign table columntest -drop cascades to foreign table noprimary -drop cascades to foreign table limittest -drop cascades to foreign table grem1_1 -drop cascades to foreign table grem1_2 -drop cascades to foreign table case_exp -drop cascades to foreign table "type_STRING" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BYTE" -drop cascades to foreign table "type_SINT" -drop cascades to foreign table "type_BINT" -drop cascades to foreign table "type_INTEGER" -drop cascades to foreign table "type_FLOAT" -drop cascades to foreign table "type_DOUBLE" -drop cascades to foreign table "type_TIMESTAMP" -drop cascades to foreign table "type_BLOB" -drop cascades to foreign table "type_DATE" -drop cascades to foreign table "type_TIME" -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_UUIDpk" -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "types_PostGIS" -drop cascades to foreign table "BitT" -drop cascades to foreign table notype -drop cascades to foreign table typetest -drop cascades to foreign table "type_TEXT" -drop cascades to foreign table alltypetest -drop cascades to foreign table shorty -drop cascades to foreign table "A a" -drop cascades to foreign table fts_table -drop cascades to foreign table fts_table_data -drop cascades to foreign table fts_table_idx -drop cascades to foreign table fts_table_content -drop cascades to foreign table fts_table_docsize -drop cascades to foreign table fts_table_config -drop cascades to foreign table "RO_RW_test" -drop cascades to foreign table "Unicode data" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to foreign table "♁" -drop cascades to foreign table "♂" -drop cascades to foreign table type_json -drop cascades to foreign table "type_BOOLEAN" -drop cascades to server sqlite2 diff --git a/expected/17.0/types/bool.out b/expected/17.0/types/bool.out index ccb740e5..814110a1 100644 --- a/expected/17.0/types/bool.out +++ b/expected/17.0/types/bool.out @@ -239,7 +239,7 @@ INSERT INTO "type_BOOLEANpk" VALUES (FALSE); --Testcase 44: ERR - primary key INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) --Testcase 45: DELETE FROM "type_BOOLEANpk"; diff --git a/expected/17.0/types/json.out b/expected/17.0/types/json.out new file mode 100644 index 00000000..68c6700d --- /dev/null +++ b/expected/17.0/types/json.out @@ -0,0 +1,3164 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + i | tx +---+--------------------- + 1 | CC2B173501176113... + 2 | CB2A233131233232... + 3 | CC1C17613778797A... + 4 | CC11176100276132... + 5 | CB13133900133713... + 6 | CB2A35302E303531... +(6 rows) + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSON" +(3 rows) + +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | null + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j -> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | null | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 'c'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + QUERY PLAN +------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB+" j + Output: i, j, (j ->> 'c'::text), l, t, tx + SQLite query: SELECT `i`, json(`j`), `l`, `t`, `tx` FROM main."type_JSONB+" +(3 rows) + +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+------------------+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [4, 5, {"f": 7}] | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + i | j | res | l | t | tx +---+----------------------------------------------------------------------------------------------------+-----+----+------+--------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | 45 | blob | CC2B173501176113... + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 44 | blob | CB2A233131233232... + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | 30 | blob | CC1C17613778797A... + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 19 | blob | CC11176100276132... + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 21 | blob | CB13133900133713... + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 44 | blob | CB2A35302E303531... +(6 rows) + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } +(3 rows) + +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} +(3 rows) + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } +(2 rows) + +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 'c') IS NOT NULL)) +(3 rows) + +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} +(2 rows) + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | null + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | null +(6 rows) + +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | null +(6 rows) + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 22 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1.1 +(6 rows) + +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; + i | j | res +---+---------------------------------------------------------------------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 11 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | + 4 | {"a":null, "a22":22.0, "a2":2 } | + 5 | [9,null,7,6,5,4,3,2,1,0] | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | +(6 rows) + +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> 1) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 22 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1.1 +(6 rows) + +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + i | j | res +---+----------------------------------------------------------------------------------------------------+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 11 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | + 4 | {"a": null, "a2": 2, "a22": 22.0} | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | +(6 rows) + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(3 rows) + +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) -> 1) IS NOT NULL)) +(3 rows) + +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(3 rows) + +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(2 rows) + +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+--------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] +(1 row) + +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> 1) IS NOT NULL)) +(3 rows) + +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(2 rows) + +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + i | j +---+---------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] +(1 row) + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | "xyz" + 4 | {"a":null, "a22":22.0, "a2":2 } | a | null + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; + i | j | ot | res +---+---------------------------------------------------------------------------------------+----+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c | [4,5,{"f":7}] + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 1 | + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a | xyz + 4 | {"a":null, "a22":22.0, "a2":2 } | a | + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 1 | +(6 rows) + +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + i | j | ot | res +---+----------------------------------------------------------------------------------------------------+----+------------------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c | [4, 5, {"f": 7}] + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 1 | + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a | xyz + 4 | {"a": null, "a2": 2, "a22": 22.0} | a | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 1 | +(6 rows) + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a + 4 | {"a":null, "a22":22.0, "a2":2 } | a +(3 rows) + +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | a +(3 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+---------------------------------------------------------------------------------------+---- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | c + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | a +(2 rows) + +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot +---+----------------------------------------------------------------------------------------------------+---- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | c + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | a +(2 rows) + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | null +(6 rows) + +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j -> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | null +(6 rows) + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" +(3 rows) + +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; + i | j | oi | res +---+---------------------------------------------------------------------------------------+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | 2 | + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 | 44 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | 1 | + 4 | {"a":null, "a22":22.0, "a2":2 } | 4 | + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 | 3 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 | +(6 rows) + +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi, (j ->> oi) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" +(3 rows) + +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + i | j | oi | res +---+----------------------------------------------------------------------------------------------------+----+----- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | 2 | + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 | 44 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | 1 | + 4 | {"a": null, "a2": 2, "a22": 22.0} | 4 | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 | 3 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 | +(6 rows) + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+-----------------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | -2 +(3 rows) + +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | -2 +(3 rows) + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, oi + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+---------------------------------------------+---- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 3 + 5 | [9,null,7,6,5,4,3,2,1,0] | -4 +(2 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, oi + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> `oi`) IS NOT NULL)) +(3 rows) + +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + i | j | oi +---+----------------------------------------------------------+---- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 3 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | -4 +(2 rows) + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(3 rows) + +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 55 | 4 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 3.3 | 3 +(2 rows) + +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 +(4 rows) + +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(3 rows) + +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 55 | 4 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 3.3 | 3 +(2 rows) + +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + oi1)), (oi + oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + `oi1`)) IS NULL)) +(3 rows) + +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 +(4 rows) + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+------+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 5 | [9,null,7,6,5,4,3,2,1,0] | null | -9 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(3 rows) + +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | +(3 rows) + +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 33 | 2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 5.5 | -7 +(2 rows) + +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, `j`, `oi`, `oi1` FROM main."type_JSON" WHERE (((`j` ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 1 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | + 4 | {"a":null, "a22":22.0, "a2":2 } | | + 5 | [9,null,7,6,5,4,3,2,1,0] | | -9 +(4 rows) + +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+------+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | null | -9 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(3 rows) + +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | +(3 rows) + +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NOT NULL)) +(3 rows) + +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 33 | 2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 5.5 | -7 +(2 rows) + +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi - oi1)), (oi - oi1) + SQLite query: SELECT `i`, json(`j`), `oi`, `oi1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` - `oi1`)) IS NULL)) +(3 rows) + +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 1 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | + 4 | {"a": null, "a2": 2, "a22": 22.0} | | + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | -9 +(4 rows) + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | 66 | 5 + 5 | [9,null,7,6,5,4,3,2,1,0] | 1 | -2 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | 0.0 | 0 +(3 rows) + +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, `j`, `oi` FROM main."type_JSON" WHERE (((`j` ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | | 4 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | | 3 + 4 | {"a":null, "a22":22.0, "a2":2 } | | 6 +(3 rows) + +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) -> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NOT NULL)) +(3 rows) + +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | 66 | 5 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | 1 | -2 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | 0.0 | 0 +(3 rows) + +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (oi + 2)), (oi + 2) + SQLite query: SELECT `i`, json(`j`), `oi` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`oi` + 2)) IS NULL)) +(3 rows) + +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | | 4 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | | 3 + 4 | {"a": null, "a2": 2, "a22": 22.0} | | 6 +(3 rows) + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+-----------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | ["a", "b", "c"] | cc3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | false | aπ + 4 | {"a":null, "a22":22.0, "a2":2 } | 22.0 | a22 +(3 rows) + +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 129 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 15 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 121 +(3 rows) + +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NOT NULL)) +(3 rows) + +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+-----------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | ["a", "b", "c"] | cc3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | false | aπ + 4 | {"a": null, "a2": 2, "a22": 22.0} | 22.0 | a22 +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || ot1)), (ot || ot1) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || `ot1`)) IS NULL)) +(3 rows) + +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 129 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 15 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 121 +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | "xyz" | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+---------------------------------------------------------------------------------------+---------------+------ + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} | [true, false] | c3 + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } | xyz | a + 4 | {"a":null, "a22":22.0, "a2":2 } | 2 | a2 +(3 rows) + +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, `j`, `ot`, `ot1` FROM main."type_JSON" WHERE (((`j` ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+-----------------------------------------------------+-----+------ + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] | | 19 + 5 | [9,null,7,6,5,4,3,2,1,0] | | 1 + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] | | 11 +(3 rows) + +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | "xyz" | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_JSONB" j + Output: i, j, (j -> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) -> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NOT NULL)) +(3 rows) + +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; + i | j | res | expr +---+----------------------------------------------------------------------------------------------------+---------------+------ + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} | [true, false] | c3 + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} | xyz | a + 4 | {"a": null, "a2": 2, "a22": 22.0} | 2 | a2 +(3 rows) + +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (j ->> (ot || substr(ot1, 2, 1))), (ot || substr(ot1, 2, 1)) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1` FROM main."type_JSONB" WHERE (((json(`j`) ->> (`ot` || substr(`ot1`, 2, 1))) IS NULL)) +(3 rows) + +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + i | j | res | expr +---+----------------------------------------------------------------+-----+------ + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] | | 19 + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] | | 1 + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] | | 11 +(3 rows) + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+--------------------------------------------------------------------------------------- + 1 | {"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]} +(1 row) + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j + SQLite query: SELECT `i`, `j` FROM main."type_JSON" WHERE (((`j` ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+----------------------------------------------------- + 2 | [11,22,33,44,55,66,77,88,99,10,11,12,13,14] + 3 | {"a":"xyz", "π":3.1415926535, "aπ":false } + 4 | {"a":null, "a22":22.0, "a2":2 } + 5 | [9,null,7,6,5,4,3,2,1,0] + 6 | [0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true] +(5 rows) + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NOT NULL)) +(3 rows) + +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + i | j +---+---------------------------------------------------------------------------------------------------- + 1 | {"5": true, "a": 2, "c": [4, 5, {"f": 7}], "c3": [true, false], "a+u": 47, "cc3": ["a", "b", "c"]} +(1 row) + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" WHERE (((json(`j`) ->> '$.c[2].f') IS NULL)) +(3 rows) + +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + i | j +---+---------------------------------------------------------------- + 2 | [11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 11, 12, 13, 14] + 3 | {"a": "xyz", "π": 3.1415926535, "aπ": false} + 4 | {"a": null, "a2": 2, "a22": 22.0} + 5 | [9, null, 7, 6, 5, 4, 3, 2, 1, 0] + 6 | [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, null, true] +(5 rows) + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) ->> `ot`) IS NULL)) +(3 rows) + +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------+----------+--------------- + 1 | {"a":2,"c":[4,5,{"f":7}]} | $ | + 2 | {"a":2,"c":[4,5,{"f":7}]} | $.c | + 3 | {"a":2,"c":[4,5,{"f":7}]} | c | [4,5,{"f":7}] + 4 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2] | + 5 | {"a":2,"c":[4,5,{"f":7}]} | $.c[2].f | + 6 | {"a":2,"c":[4,5],"f":7} | $.c[#-1] | +(6 rows) + +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" WHERE (((`j` -> `ot`) IS NULL)) +(3 rows) + +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------+-----+----- + 7 | {"a":2,"c":[4,5],"f":7} | $.e | +(1 row) + +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NOT NULL)) +(3 rows) + +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + i | j | ot | res +---+---------------------------------+----------+------------------ + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | $ | + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c | + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | c | [4, 5, {"f": 7}] + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2] | + 5 | {"a": 2, "c": [4, 5, {"f": 7}]} | $.c[2].f | + 6 | {"a": 2, "c": [4, 5], "f": 7} | $.c[#-1] | +(6 rows) + +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, ot, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" WHERE (((json(`j`) -> `ot`) IS NULL)) +(3 rows) + +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; + i | j | ot | res +---+-------------------------------+-----+----- + 7 | {"a": 2, "c": [4, 5], "f": 7} | $.e | +(1 row) + +-- end of SQLite right -> ->> operand test +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ->> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, `j`, `ot` FROM main."type_JSON" +(3 rows) + +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + i | r +---+--------------- + 1 | + 2 | + 3 | [4,5,{"f":7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j -> ot) + SQLite query: SELECT `i`, json(`j`), `ot` FROM main."type_JSONB" +(3 rows) + +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + i | r +---+------------------ + 1 | + 2 | + 3 | [4, 5, {"f": 7}] + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(3 rows) + +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(3 rows) + +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + i | r +---+--- + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + 7 | +(7 rows) + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #> q) + Filter: ((j.j #> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------ + Foreign Scan on public."type_JSON" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, `j`, `q` FROM main."type_JSON" +(4 rows) + +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+--------------- + 1 | 2 + 2 | [4,5,{"f":7}] + 3 | {"f":7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + i | r +---+--- + 6 | +(1 row) + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #>> q) + Filter: ((j.j #>> j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + i | r +---+------------------ + 1 | 2 + 2 | [4, 5, {"f": 7}] + 3 | {"f": 7} + 4 | 7 + 5 | 5 + 7 | 2 +(6 rows) + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?| q) + Filter: ((j.j ?| j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t + 5 | t + 6 | f + 7 | t +(7 rows) + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j ?& q) + Filter: ((j.j ?& j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + i | r +---+--- + 1 | t + 2 | t + 3 | f + 4 | f + 5 | f + 6 | f + 7 | t +(7 rows) + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j - j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j - q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2} + 4 | {"a": 2} + 5 | {"a": 2, "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + i | r +---+--- +(0 rows) + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, (j #- q) + Filter: ((j.j #- j.q) IS NOT NULL) + SQLite query: SELECT `i`, json(`j`), `q` FROM main."type_JSONB" +(4 rows) + +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + i | r +---+------------------------------- + 1 | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2} + 3 | {"a": 2, "c": [4, 5]} + 4 | {"a": 2, "c": [4, 5, {}]} + 5 | {"a": 2, "c": [4], "f": 7} + 6 | {"a": 2, "c": [4, 5], "f": 7} + 7 | {} +(7 rows) + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j1` = jsonb('{"c": [4, 5, {"f": 7}]}') +(3 rows) + +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+---------------------------------+----+------+---------------------+----+-----+----+-----+---------+------------------------- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {a} | {"c": [4, 5, {"f": 7}]} + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c} | {"c": [4, 5, {"f": 7}]} + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2} | {"c": [4, 5, {"f": 7}]} + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 18 | blob | CC10176113321763... | | | | | {c,2,f} | {"c": [4, 5, {"f": 7}]} + 5 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {c,-1} | {"c": [4, 5, {"f": 7}]} + 6 | {"a": 2, "c": [4, 5], "f": 7} | 17 | blob | CC0F176113321763... | | | | | {u,8,i} | {"c": [4, 5, {"f": 7}]} + 7 | {"a": 2} | 5 | blob | 4C17611332... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(7 rows) + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j @> j1) + Filter: ("type_JSONB".j @> "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; + i | r +---+--- + 1 | t + 2 | t + 3 | t + 4 | t +(4 rows) + +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + QUERY PLAN +-------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, (j1 <@ j) + Filter: ("type_JSONB".j <@ "type_JSONB".j1) + SQLite query: SELECT `i`, json(`j`), json(`j1`) FROM main."type_JSONB" +(4 rows) + +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + i | r +---+--- +(0 rows) + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + QUERY PLAN +--------------------------------------------------------- + Foreign Scan on public."type_JSON" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j` FROM main."type_JSON" +(3 rows) + +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; + i | j | res +---+---------------------------+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 2 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 3 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 4 | {"a":2,"c":[4,5,{"f":7}]} | 7 + 5 | {"a":2,"c":[4,5],"f":7} | + 6 | {"a":2,"c":[4,5],"f":7} | + 7 | {"a":2} | +(7 rows) + +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + QUERY PLAN +-------------------------------------------------------------- + Foreign Scan on public."type_JSONB" j + Output: i, j, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, json(`j`) FROM main."type_JSONB" +(3 rows) + +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; + i | j | res +---+---------------------------------+----- + 1 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 2 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 3 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 4 | {"a": 2, "c": [4, 5, {"f": 7}]} | 7 + 5 | {"a": 2, "c": [4, 5], "f": 7} | + 6 | {"a": 2, "c": [4, 5], "f": 7} | + 7 | {"a": 2} | +(7 rows) + +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSON" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'c'::text) -> 2) ->> 'f'::text) + SQLite query: SELECT `i`, `j`, `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSON" WHERE ((`i` = 1)) AND (((((`j` -> 'c') -> 2) ->> 'f') IS NOT NULL)) +(3 rows) + +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---------------------------+----+-----+----+-----+-----+----+----- + 1 | {"a":2,"c":[4,5,{"f":7}]} | | | | | {a} | | 7 +(1 row) + +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_JSONB" + Output: i, j, ot, ot1, oi, oi1, q, j1, (((j -> 'q'::text) -> 2) ->> 'r'::text) + SQLite query: SELECT `i`, json(`j`), `ot`, `ot1`, `oi`, `oi1`, `q`, json(`j1`) FROM main."type_JSONB" WHERE ((`i` = 1)) AND (((((json(`j`) -> 'q') -> 2) ->> 'r') IS NOT NULL)) +(3 rows) + +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + i | j | ot | ot1 | oi | oi1 | q | j1 | res +---+---+----+-----+----+-----+---+----+----- +(0 rows) + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Update on public."type_JSON" + -> Foreign Update on public."type_JSON" + SQLite query: UPDATE main."type_JSON" SET `j` = json('{"q":[4,5,{"r":7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; + i | j | ot | ot1 | oi | oi1 | q | j1 +---+---------------------+----+-----+----+-----+-----+---- + 1 | {"q":[4,5,{"r":7}]} | | | | | {a} | +(1 row) + +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; + QUERY PLAN +------------------------------------------------------------------------------------------------------------- + Update on public."type_JSONB" + -> Foreign Update on public."type_JSONB" + SQLite query: UPDATE main."type_JSONB" SET `j` = jsonb('{"q": [4, 5, {"r": 7}]}') WHERE ((`i` = 1)) +(3 rows) + +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + i | j | l | t | tx | ot | ot1 | oi | oi1 | q | j1 +---+-------------------------+----+------+---------------------+----+-----+----+-----+-----+------------------------- + 1 | {"q": [4, 5, {"r": 7}]} | 14 | blob | CC0C17719B133413... | | | | | {a} | {"c": [4, 5, {"f": 7}]} +(1 row) + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; + count +------- + 344 +(1 row) + +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'genus') = 'Quercus')) +(3 rows) + +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | +(2 rows) + +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + QUERY PLAN +--------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + Filter: (((json_osm_test.t ->> 'height'::text))::double precision = '15'::double precision) + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" +(4 rows) + +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; + wkt | osm_type | osm_id | t | way_nodes +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212))) | relation | 6636665 | {"name":"Южный корпус","height":"15","roof:shape":"pyramidal","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C"} | + SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209))) | relation | 14572597 | {"height":"15","roof:shape":"gabled","start_date":"1782","roof:colour":"#DADDE2","roof:height":"2","building:part":"yes","roof:material":"metal","building:colour":"#FFE19C","roof:orientation":"across"} | +(2 rows) + +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'deciduous')) +(3 rows) + +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; + wkt | osm_type | osm_id | t | way_nodes +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + SRID=4326;POINT(30.4529584 59.6849417) | node | 3968068680 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4527994 59.6847007) | node | 8566916332 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4528945 59.6847497) | node | 8566916333 | {"height":"8","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4525278 59.685471) | node | 8895996643 | {"genus":"Tilia","height":"6","natural":"tree","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6851265) | node | 8899249773 | {"genus":"Malus","taxon":"Malus niedzwetzkyana","height":"5","natural":"tree","genus:ru":"Яблоня","taxon:ru":"Яблоня Недзвецкого","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4533043 59.6851928) | node | 8899249779 | {"height":"4","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4531527 59.685139) | node | 8899299127 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4532426 59.6850926) | node | 8902082171 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532694 59.6851157) | node | 8902082172 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4528986 59.6851502) | node | 8902082174 | {"genus":"Quercus","taxon":"Quercus robur","natural":"tree","genus:ru":"Дуб","taxon:ru":"Дуб черешчатый","leaf_type":"broadleaved","denotation":"landmark","leaf_cycle":"deciduous"} | + SRID=4326;POINT(30.4534136 59.6849004) | node | 8905335424 | {"genus":"Prunus","taxon":"Prunus sachalinensis","height":"5","natural":"tree","genus:ru":"Вишня","taxon:ru":"Вишня сахалинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4534776 59.6848679) | node | 8905335426 | {"genus":"Rhamnus","taxon":"Rhamnus cathartica","height":"4","natural":"tree","genus:ru":"Жостер","taxon:ru":"Жостер слабительный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;POINT(30.4532466 59.6848527) | node | 8905335431 | {"genus":"Ginkgo","taxon":"Ginkgo biloba","height":"2.5","natural":"tree","genus:ru":"Гингко","taxon:ru":"Гинкго двулопастный","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"label"} | + SRID=4326;POINT(30.4532392 59.6848902) | node | 8905335469 | {"height":"3","natural":"tree","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963) | way | 871154683 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board","species:wikidata":"Q162750"} | {8114975041,8899249805,8899249804,8899249803,8899249802,8114975042} + SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8114975046,8114975047,8906857474,8906857473,8114975046} + SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256) | way | 922854851 | {"height":"8","natural":"tree_row","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {5002059748,5002059751} + SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274))) | way | 871154684 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996549,8895996548,8895996547,8895996546,8895996549} + SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996553,8895996552,8895996551,8895996550,8895996553} + SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962) | way | 961717608 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622} + SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153) | way | 961717609 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636} + SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249763,8899249762,8899249761,8899249760,8899249759,8899249763} + SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425) | way | 962062989 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.5","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8899249781,8899249780} + SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792} + SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789) | way | 962062992 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","source:taxon":"board","species:wikidata":"Q162750"} | {8899249807,8899249801,8899249800,8899249799,8899249798,8899249806} + SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816} + SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126} + SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150} + SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158} + SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082032,8902082031,8902082030,8902082029,8902082032} + SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038} + SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082047,8902082046,8902082045,8902082044,8902082043,8902082047} + SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054} + SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082059,8902082058,8902082057,8902082056,8902082059} + SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082070,8902082069,8902082068,8902082067,8902082066,8902082070} + SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082080,8902082079,8902082078,8902082077,8902082076,8902082080} + SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082084,8902082083,8902082082,8902082081,8902082084} + SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090} + SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096} + SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102} + SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108} + SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109} + SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120} + SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126} + SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | {8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132} + SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167} + SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682} + SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992687,8904992686,8904992685,8904992684,8904992683,8904992687} + SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992691,8904992690,8904992689,8904992688,8904992691} + SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699} + SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335435,8905335434,8905335433,8905335432,8905335435} + SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335439,8905335438,8905335437,8905335436,8905335439} + SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335444,8905335443,8905335442,8905335441,8905335440,8905335444} + SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454} + SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335458,8905335457,8905335456,8905335455,8905335458} + SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467} + SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | {8905558227,8905558226,8906857476,8906857475,8905558227} + SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664) | way | 962869359 | {"genus":"Prunus","taxon":"Prunus virginiana","height":"1.7","barrier":"hedge","genus:ru":"Черёмуха","taxon:ru":"Черёмуха виргинская","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857452,8906857451} + SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | {8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461} + SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114))) | relation | 12922491 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488))) | way | 961717599 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713))) | way | 961717600 | {"genus":"Syrínga","taxon":"Syringa meyeri","natural":"scrub","genus:ru":"Сирень","taxon:ru":"Сирень Мейера","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974))) | way | 962062985 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013))) | way | 962062990 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789))) | way | 962062993 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728))) | way | 962062994 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532))) | way | 962062996 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813))) | way | 962062997 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668))) | way | 962382761 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691))) | way | 962382762 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918))) | way | 962382763 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544))) | way | 962382764 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184))) | way | 962382765 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275))) | way | 962382767 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682))) | way | 962382768 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078))) | way | 962382769 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233))) | way | 962382770 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005))) | way | 962382771 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902))) | way | 962382772 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505))) | way | 962382773 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024))) | way | 962382774 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515))) | way | 962382775 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599))) | way | 962382776 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727))) | way | 962382777 | {"genus":"Rosa","taxon":"Rosa spinosissima","natural":"scrub","genus:ru":"Роза","taxon:ru":"Роза колючейшая","leaf_type":"broadleaved","leaf_cycle":"deciduous","source:taxon":"board"} | + SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083))) | way | 962382781 | {"genus":"Tilia","height":"6","natural":"tree_row","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248))) | way | 962678727 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711))) | way | 962678728 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246))) | way | 962678729 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335))) | way | 962678730 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485))) | way | 962714215 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511))) | way | 962714216 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431))) | way | 962714217 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025))) | way | 962714218 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632))) | way | 962714219 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308))) | way | 962714220 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573))) | way | 962735614 | {"genus":"Cotoneaster","taxon":"Cotoneaster lucidus","height":"0.5","barrier":"hedge","landuse":"grass","genus:ru":"Кизильник","taxon:ru":"Кизильник блестящий","leaf_type":"broadleaved","leaf_cycle":"deciduous","species:ru":"Кизильник блестящий","species:wikidata":"Q162750"} | + SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448))) | relation | 12933782 | {"ref":"5","name":"Кенконс","genus":"Tilia","name:en":"The Quincunx","natural":"wood","genus:ru":"Липа","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675))) | way | 962869361 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | + SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399))) | relation | 12932608 | {"natural":"scrub","leaf_type":"broadleaved","leaf_cycle":"deciduous"} | +(100 rows) + +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'leaf_cycle') = 'evergreen')) +(3 rows) + +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4529784 59.6853519) | node | 8895996426 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4529255 59.6853861) | node | 8895996427 | {"genus":"Thuja","height":"1","natural":"tree","genus:ru":"Туя","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4530089 59.6850564) | node | 8902082048 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4529982 59.685072) | node | 8902082055 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4530213 59.6850872) | node | 8902082060 | {"genus":"Picea","taxon":"Picea glauca","height":"1.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель сизая","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4531977 59.6851532) | node | 8902082074 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.453207 59.6851336) | node | 8902082075 | {"genus":"Thuja","taxon":"Thuja occidentalis","height":"1","natural":"tree","genus:ru":"Туя","taxon:ru":"Туя западная","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | + SRID=4326;POINT(30.4533998 59.6848611) | node | 8905335425 | {"genus":"Buxus","taxon":"Buxus sempervirens","height":"1","natural":"shrub","genus:ru":"Самшит","taxon:ru":"Самшит вечнозелёный","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4533874 59.6849671) | node | 8905335429 | {"genus":"Juniperus","taxon":"Juniperus sabina","height":"0.5","natural":"shrub","genus:ru":"Можжевельник","taxon:ru":"Можжевельник казацкий","leaf_type":"needleleaved","leaf_cycle":"evergreen"} | + SRID=4326;POINT(30.4531319 59.6849356) | node | 8905335430 | {"genus":"Picea","taxon":"Picea abies","height":"0.5","natural":"tree","genus:ru":"Ель","taxon:ru":"Ель европейская","leaf_type":"needleleaved","leaf_cycle":"evergreen","source:taxon":"board"} | +(10 rows) + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.json_osm_test + Output: wkt, osm_type, osm_id, t, way_nodes + SQLite query: SELECT `wkt`, `osm_type`, `osm_id`, json(`tags`), `way_nodes` FROM main."json_osm_test" WHERE (((json(`tags`) ->> 'start_date') = 'C18')) +(3 rows) + +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + wkt | osm_type | osm_id | t | way_nodes +----------------------------------------+----------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + SRID=4326;POINT(30.4532025 59.6850113) | node | 1738381537 | {"height":"1.5","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","description":"Ваза в дендрарии Собственного садика","artwork_type":"vase"} | + SRID=4326;POINT(30.4529561 59.6848095) | node | 8114975053 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528946 59.6848042) | node | 8114975054 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528732 59.6848762) | node | 8114975055 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529364 59.6848802) | node | 8114975056 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528444 59.6851765) | node | 8289295956 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527798 59.6851726) | node | 8289295957 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528665 59.6850957) | node | 8289295958 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528046 59.685091) | node | 8289295959 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528947 59.6850172) | node | 8289295960 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528301 59.6850118) | node | 8289295961 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4529101 59.6849636) | node | 8289295962 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528496 59.684959) | node | 8289295963 | {"name":"Ваза","height":"1.5","name:en":"Vase","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","wikidata":"Q118122044","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4528359 59.6852187) | node | 8331430659 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | + SRID=4326;POINT(30.4527605 59.685213) | node | 8331430660 | {"height":"2","ref:okn":"781620399040936","tourism":"artwork","historic":"yes","material":"marble","start_date":"C18","artwork_type":"vase"} | +(15 rows) + +--Testcase 413: +DELETE FROM json_osm_test; +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_JSON" +drop cascades to foreign table "type_JSONB" +drop cascades to foreign table "type_JSONB+" +drop cascades to foreign table json_osm_test diff --git a/expected/17.0/types/macaddr.out b/expected/17.0/types/macaddr.out index e3f33b73..286573dd 100644 --- a/expected/17.0/types/macaddr.out +++ b/expected/17.0/types/macaddr.out @@ -843,7 +843,7 @@ ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type ' --Testcase 158: ERR - primary key INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDRpk"; diff --git a/expected/17.0/types/macaddr8.out b/expected/17.0/types/macaddr8.out index 77e0f0ca..e367ee36 100644 --- a/expected/17.0/types/macaddr8.out +++ b/expected/17.0/types/macaddr8.out @@ -844,7 +844,7 @@ ERROR: option "column_type" provided more than once --Testcase 158: ERR - primary key INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) --Testcase 159: SELECT * FROM "type_MACADDR8pk"; diff --git a/expected/17.0/types/uuid.out b/expected/17.0/types/uuid.out index 35bf1e87..35a2d86c 100644 --- a/expected/17.0/types/uuid.out +++ b/expected/17.0/types/uuid.out @@ -524,7 +524,7 @@ SELECT * FROM "type_UUIDpk"; --Testcase 105: ERR - primary key INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 19 +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) --Testcase 106: ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); diff --git a/sql/13.15/gis_no/auto_import.sql b/sql/13.15/gis_no/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/13.15/gis_no/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/type_nogis.sql b/sql/13.15/gis_no/type.sql similarity index 99% rename from sql/13.15/type_nogis.sql rename to sql/13.15/gis_no/type.sql index 3bfe8c0e..554edaf6 100644 --- a/sql/13.15/type_nogis.sql +++ b/sql/13.15/gis_no/type.sql @@ -280,5 +280,7 @@ INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/gis_ok/auto_import.sql b/sql/13.15/gis_ok/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/13.15/gis_ok/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/type_postgis.sql b/sql/13.15/gis_ok/type.sql similarity index 99% rename from sql/15.7/type_postgis.sql rename to sql/13.15/gis_ok/type.sql index eb564789..10ac0aca 100644 --- a/sql/15.7/type_postgis.sql +++ b/sql/13.15/gis_ok/type.sql @@ -282,5 +282,7 @@ INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/libsqlite.sql b/sql/13.15/libsqlite.sql new file mode 100644 index 00000000..833e1a11 --- /dev/null +++ b/sql/13.15/libsqlite.sql @@ -0,0 +1,17 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; + +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/types/json.sql b/sql/13.15/types/json.sql new file mode 100644 index 00000000..9a22b4ad --- /dev/null +++ b/sql/13.15/types/json.sql @@ -0,0 +1,1190 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); + +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); + +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +-- end of SQLite right -> ->> operand test + +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; + +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; + +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; + +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + +--Testcase 413: +DELETE FROM json_osm_test; + +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/gis_no/auto_import.sql b/sql/14.12/gis_no/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/14.12/gis_no/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/type_nogis.sql b/sql/14.12/gis_no/type.sql similarity index 99% rename from sql/14.12/type_nogis.sql rename to sql/14.12/gis_no/type.sql index 3bfe8c0e..554edaf6 100644 --- a/sql/14.12/type_nogis.sql +++ b/sql/14.12/gis_no/type.sql @@ -280,5 +280,7 @@ INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/gis_ok/auto_import.sql b/sql/14.12/gis_ok/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/14.12/gis_ok/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/type_postgis.sql b/sql/14.12/gis_ok/type.sql similarity index 99% rename from sql/13.15/type_postgis.sql rename to sql/14.12/gis_ok/type.sql index eb564789..10ac0aca 100644 --- a/sql/13.15/type_postgis.sql +++ b/sql/14.12/gis_ok/type.sql @@ -282,5 +282,7 @@ INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/libsqlite.sql b/sql/14.12/libsqlite.sql new file mode 100644 index 00000000..833e1a11 --- /dev/null +++ b/sql/14.12/libsqlite.sql @@ -0,0 +1,17 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; + +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/types/json.sql b/sql/14.12/types/json.sql new file mode 100644 index 00000000..9a22b4ad --- /dev/null +++ b/sql/14.12/types/json.sql @@ -0,0 +1,1190 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); + +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); + +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +-- end of SQLite right -> ->> operand test + +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; + +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; + +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; + +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + +--Testcase 413: +DELETE FROM json_osm_test; + +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/gis_no/auto_import.sql b/sql/15.7/gis_no/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/15.7/gis_no/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/gis_no/type.sql b/sql/15.7/gis_no/type.sql new file mode 100644 index 00000000..554edaf6 --- /dev/null +++ b/sql/15.7/gis_no/type.sql @@ -0,0 +1,286 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); + +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; + +--Testcase 16: +SELECT * FROM "type_STRING"; +--Testcase 18: +SELECT * FROM "type_BYTE"; +--Testcase 19: +SELECT * FROM "type_SINT"; +--Testcase 20: +SELECT * FROM "type_BINT"; +--Testcase 21: +SELECT * FROM "type_INTEGER"; +--Testcase 22: +SELECT * FROM "type_FLOAT"; +--Testcase 23: +SELECT * FROM "type_DOUBLE"; +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; +--Testcase 25: +SELECT * FROM "type_BLOB"; +--Testcase 26: +SELECT * FROM typetest; + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); + +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; +--Testcase 57 +DELETE FROM type_JSON; + +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK +--Testcase 65: +DELETE FROM "type_BOOLEAN"; + +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; + +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); + +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; + +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/gis_ok/auto_import.sql b/sql/15.7/gis_ok/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/15.7/gis_ok/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/type_postgis.sql b/sql/15.7/gis_ok/type.sql similarity index 99% rename from sql/16.3/type_postgis.sql rename to sql/15.7/gis_ok/type.sql index eb564789..10ac0aca 100644 --- a/sql/16.3/type_postgis.sql +++ b/sql/15.7/gis_ok/type.sql @@ -282,5 +282,7 @@ INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/libsqlite.sql b/sql/15.7/libsqlite.sql new file mode 100644 index 00000000..833e1a11 --- /dev/null +++ b/sql/15.7/libsqlite.sql @@ -0,0 +1,17 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; + +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/type_nogis.sql b/sql/15.7/type_nogis.sql deleted file mode 100644 index 3bfe8c0e..00000000 --- a/sql/15.7/type_nogis.sql +++ /dev/null @@ -1,284 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); - ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; - ---Testcase 16: -SELECT * FROM "type_STRING"; ---Testcase 18: -SELECT * FROM "type_BYTE"; ---Testcase 19: -SELECT * FROM "type_SINT"; ---Testcase 20: -SELECT * FROM "type_BINT"; ---Testcase 21: -SELECT * FROM "type_INTEGER"; ---Testcase 22: -SELECT * FROM "type_FLOAT"; ---Testcase 23: -SELECT * FROM "type_DOUBLE"; -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; ---Testcase 25: -SELECT * FROM "type_BLOB"; ---Testcase 26: -SELECT * FROM typetest; - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); - --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; ---Testcase 57 -DELETE FROM type_JSON; - ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK ---Testcase 65: -DELETE FROM "type_BOOLEAN"; - --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; - ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); - --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; - ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/types/json.sql b/sql/15.7/types/json.sql new file mode 100644 index 00000000..9a22b4ad --- /dev/null +++ b/sql/15.7/types/json.sql @@ -0,0 +1,1190 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); + +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); + +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +-- end of SQLite right -> ->> operand test + +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; + +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; + +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; + +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + +--Testcase 413: +DELETE FROM json_osm_test; + +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/gis_no/auto_import.sql b/sql/16.3/gis_no/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/16.3/gis_no/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/gis_no/type.sql b/sql/16.3/gis_no/type.sql new file mode 100644 index 00000000..554edaf6 --- /dev/null +++ b/sql/16.3/gis_no/type.sql @@ -0,0 +1,286 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); + +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; + +--Testcase 16: +SELECT * FROM "type_STRING"; +--Testcase 18: +SELECT * FROM "type_BYTE"; +--Testcase 19: +SELECT * FROM "type_SINT"; +--Testcase 20: +SELECT * FROM "type_BINT"; +--Testcase 21: +SELECT * FROM "type_INTEGER"; +--Testcase 22: +SELECT * FROM "type_FLOAT"; +--Testcase 23: +SELECT * FROM "type_DOUBLE"; +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; +--Testcase 25: +SELECT * FROM "type_BLOB"; +--Testcase 26: +SELECT * FROM typetest; + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); + +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; +--Testcase 57 +DELETE FROM type_JSON; + +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK +--Testcase 65: +DELETE FROM "type_BOOLEAN"; + +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; + +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); + +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; + +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/gis_ok/auto_import.sql b/sql/16.3/gis_ok/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/16.3/gis_ok/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/type_postgis.sql b/sql/16.3/gis_ok/type.sql similarity index 99% rename from sql/14.12/type_postgis.sql rename to sql/16.3/gis_ok/type.sql index eb564789..10ac0aca 100644 --- a/sql/14.12/type_postgis.sql +++ b/sql/16.3/gis_ok/type.sql @@ -282,5 +282,7 @@ INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 47: +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/libsqlite.sql b/sql/16.3/libsqlite.sql new file mode 100644 index 00000000..833e1a11 --- /dev/null +++ b/sql/16.3/libsqlite.sql @@ -0,0 +1,17 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; + +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/type_nogis.sql b/sql/16.3/type_nogis.sql deleted file mode 100644 index 3bfe8c0e..00000000 --- a/sql/16.3/type_nogis.sql +++ /dev/null @@ -1,284 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); - ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; - ---Testcase 16: -SELECT * FROM "type_STRING"; ---Testcase 18: -SELECT * FROM "type_BYTE"; ---Testcase 19: -SELECT * FROM "type_SINT"; ---Testcase 20: -SELECT * FROM "type_BINT"; ---Testcase 21: -SELECT * FROM "type_INTEGER"; ---Testcase 22: -SELECT * FROM "type_FLOAT"; ---Testcase 23: -SELECT * FROM "type_DOUBLE"; -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; ---Testcase 25: -SELECT * FROM "type_BLOB"; ---Testcase 26: -SELECT * FROM typetest; - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); - --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; ---Testcase 57 -DELETE FROM type_JSON; - ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK ---Testcase 65: -DELETE FROM "type_BOOLEAN"; - --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; - ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); - --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; - ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/types/json.sql b/sql/16.3/types/json.sql new file mode 100644 index 00000000..9a22b4ad --- /dev/null +++ b/sql/16.3/types/json.sql @@ -0,0 +1,1190 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); + +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); + +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +-- end of SQLite right -> ->> operand test + +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; + +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; + +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; + +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + +--Testcase 413: +DELETE FROM json_osm_test; + +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_no/auto_import.sql b/sql/17.0/gis_no/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/17.0/gis_no/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_no/type.sql b/sql/17.0/gis_no/type.sql new file mode 100644 index 00000000..554edaf6 --- /dev/null +++ b/sql/17.0/gis_no/type.sql @@ -0,0 +1,286 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); + +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; + +--Testcase 16: +SELECT * FROM "type_STRING"; +--Testcase 18: +SELECT * FROM "type_BYTE"; +--Testcase 19: +SELECT * FROM "type_SINT"; +--Testcase 20: +SELECT * FROM "type_BINT"; +--Testcase 21: +SELECT * FROM "type_INTEGER"; +--Testcase 22: +SELECT * FROM "type_FLOAT"; +--Testcase 23: +SELECT * FROM "type_DOUBLE"; +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; +--Testcase 25: +SELECT * FROM "type_BLOB"; +--Testcase 26: +SELECT * FROM typetest; + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); + +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; +--Testcase 57 +DELETE FROM type_JSON; + +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK +--Testcase 65: +DELETE FROM "type_BOOLEAN"; + +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; + +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); + +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; + +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_ok/auto_import.sql b/sql/17.0/gis_ok/auto_import.sql new file mode 100644 index 00000000..eff95cca --- /dev/null +++ b/sql/17.0/gis_ok/auto_import.sql @@ -0,0 +1,52 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 03: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_ok/type.sql b/sql/17.0/gis_ok/type.sql new file mode 100644 index 00000000..10ac0aca --- /dev/null +++ b/sql/17.0/gis_ok/type.sql @@ -0,0 +1,288 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 46: +CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; +--Testcase 47: +CREATE EXTENSION postgis; + +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); + +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; + +--Testcase 16: +SELECT * FROM "type_STRING"; +--Testcase 18: +SELECT * FROM "type_BYTE"; +--Testcase 19: +SELECT * FROM "type_SINT"; +--Testcase 20: +SELECT * FROM "type_BINT"; +--Testcase 21: +SELECT * FROM "type_INTEGER"; +--Testcase 22: +SELECT * FROM "type_FLOAT"; +--Testcase 23: +SELECT * FROM "type_DOUBLE"; +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; +--Testcase 25: +SELECT * FROM "type_BLOB"; +--Testcase 26: +SELECT * FROM typetest; + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); + +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; +--Testcase 57 +DELETE FROM type_JSON; + +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK +--Testcase 65: +DELETE FROM "type_BOOLEAN"; + +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; + +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); + +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; + +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/libsqlite.sql b/sql/17.0/libsqlite.sql new file mode 100644 index 00000000..833e1a11 --- /dev/null +++ b/sql/17.0/libsqlite.sql @@ -0,0 +1,17 @@ +-- Test for SQLite library code source and defaults +--Testcase 1: +CREATE EXTENSION sqlite_fdw; +--Testcase 2: +SELECT sqlite_fdw_sqlite_version(); +--Testcase 3: +SELECT length(sqlite_fdw_sqlite_code_source()); +--Testcase 4: +SELECT sqlite_fdw_sqlite_code_source(); + +--Testcase 5: +-- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 6: +-- DROP SERVER sqlite_svr; + +--Testcase 7: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/type_nogis.sql b/sql/17.0/type_nogis.sql deleted file mode 100644 index 3bfe8c0e..00000000 --- a/sql/17.0/type_nogis.sql +++ /dev/null @@ -1,284 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); - ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; - ---Testcase 16: -SELECT * FROM "type_STRING"; ---Testcase 18: -SELECT * FROM "type_BYTE"; ---Testcase 19: -SELECT * FROM "type_SINT"; ---Testcase 20: -SELECT * FROM "type_BINT"; ---Testcase 21: -SELECT * FROM "type_INTEGER"; ---Testcase 22: -SELECT * FROM "type_FLOAT"; ---Testcase 23: -SELECT * FROM "type_DOUBLE"; -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; ---Testcase 25: -SELECT * FROM "type_BLOB"; ---Testcase 26: -SELECT * FROM typetest; - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); - --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; ---Testcase 57 -DELETE FROM type_JSON; - ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK ---Testcase 65: -DELETE FROM "type_BOOLEAN"; - --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; - ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); - --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; - ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/type_postgis.sql b/sql/17.0/type_postgis.sql deleted file mode 100644 index eb564789..00000000 --- a/sql/17.0/type_postgis.sql +++ /dev/null @@ -1,286 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; - -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); - ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; - ---Testcase 16: -SELECT * FROM "type_STRING"; ---Testcase 18: -SELECT * FROM "type_BYTE"; ---Testcase 19: -SELECT * FROM "type_SINT"; ---Testcase 20: -SELECT * FROM "type_BINT"; ---Testcase 21: -SELECT * FROM "type_INTEGER"; ---Testcase 22: -SELECT * FROM "type_FLOAT"; ---Testcase 23: -SELECT * FROM "type_DOUBLE"; -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; ---Testcase 25: -SELECT * FROM "type_BLOB"; ---Testcase 26: -SELECT * FROM typetest; - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); - --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; ---Testcase 57 -DELETE FROM type_JSON; - ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK ---Testcase 65: -DELETE FROM "type_BOOLEAN"; - --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; - ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); - --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; - ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - ---Testcase 47: -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/types/json.sql b/sql/17.0/types/json.sql new file mode 100644 index 00000000..9a22b4ad --- /dev/null +++ b/sql/17.0/types/json.sql @@ -0,0 +1,1190 @@ +-- SET log_min_messages TO DEBUG3; +-- SET client_min_messages TO DEBUG3; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 010: +CREATE FOREIGN TABLE "type_JSON" ( + "i" int OPTIONS (key 'true'), + "j" json, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" json +) SERVER sqlite_svr OPTIONS (table 'type_JSON'); +--Testcase 011: +CREATE FOREIGN TABLE "type_JSONB" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB'); +--Testcase 012: +CREATE FOREIGN TABLE "type_JSONB+" ( + "i" int OPTIONS (key 'true'), + "j" jsonb, + l int, t varchar(16), tx text, + ot text, + ot1 text, + oi int, + oi1 int2, + q text[], + "j1" jsonb +) SERVER sqlite_svr OPTIONS (table 'type_JSONB+'); + +--Testcase 013: +INSERT INTO "type_JSON" ("i", "j", ot, ot1, oi, oi1) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}],"a+u":47,"5":true,"cc3":["a", "b", "c"], "c3":[true, false]}', +'c', 'c3', 2, 1), +(2, '[11,22,33,44,55,66,77,88,99,10,11,12,13,14]', +'1', '29', 3, 1), +(3, '{"a":"xyz", "π":3.1415926535, "aπ":false }', +'a', 'π', 1, NULL), +(4, '{"a":null, "a22":22.0, "a2":2 }', +'a', '22', 4, NULL), +(5, '[9,null,7,6,5,4,3,2,1,0]', +'1', '5', -4, 5), +(6, '[0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,null,true]', +'1', '21', -2, 5); + +--Testcase 014: +INSERT INTO "type_JSONB" SELECT * FROM "type_JSON"; +--Testcase 015: check some SQLite JSONb initial bytes +SELECT i, tx FROM "type_JSONB+"; + +--Testcase 020: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 021: SQLite queries to type_JSON will be without normalization for j column +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN j OPTIONS (ADD column_type 'text'); +--Testcase 022: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; + +--Testcase 023: +SELECT "i", "j", j."j"->'c' res FROM "type_JSON" j; +--Testcase 024: +SELECT "i", "j", j."j"->'a' res FROM "type_JSON" j; +--Testcase 025: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 026: +SELECT "i", "j", j."j"->'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 027: +SELECT "i", "j", j."j"->'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 028: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 029: +SELECT "i", "j", j."j"->>'c' res FROM "type_JSON" j; +--Testcase 030: +SELECT "i", "j", j."j"->>'a' res FROM "type_JSON" j; +--Testcase 031: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 032: +SELECT "i", "j", j."j"->>'c' res, l, t, tx FROM "type_JSONB+" j; +--Testcase 033: +SELECT "i", "j", j."j"->>'a' res, l, t, tx FROM "type_JSONB+" j; + +--Testcase 034: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 035: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 036: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->'a' IS NOT NULL; +--Testcase 037: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 038: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'c' IS NOT NULL; +--Testcase 039: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->'a' IS NOT NULL; + +--Testcase 040: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 041: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 042: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'a' IS NOT NULL; +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 044: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'c' IS NOT NULL; +--Testcase 045: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'a' IS NOT NULL; + +--Testcase 046: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 047: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSON" j; +--Testcase 048: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSON" j; +--Testcase 049: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 050: +SELECT "i", "j", j."j" -> 1 res FROM "type_JSONB" j; +--Testcase 051: +SELECT "i", "j", j."j" -> 10 res FROM "type_JSONB" j; + +--Testcase 052: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 053: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSON" j; +--Testcase 054: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSON" j; +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 056: +SELECT "i", "j", j."j" ->> 1 res FROM "type_JSONB" j; +--Testcase 057: +SELECT "i", "j", j."j" ->> 10 res FROM "type_JSONB" j; + +--Testcase 058: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 059: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 060: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" -> 10 IS NOT NULL; +--Testcase 061: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 062: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 1 IS NOT NULL; +--Testcase 063: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" -> 10 IS NOT NULL; + +--Testcase 064: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 065: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 066: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j" ->> 10 IS NOT NULL; +--Testcase 067: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 068: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 1 IS NOT NULL; +--Testcase 069: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j" ->> 10 IS NOT NULL; + +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 071: +SELECT "i", "j", ot, j."j"->ot res FROM "type_JSON" j; +--Testcase 072: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 073: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSON" j; +--Testcase 074: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; +--Testcase 075: +SELECT "i", "j", ot, j."j"->>ot res FROM "type_JSONB" j; + +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 077: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 078: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 079: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 081: +SELECT "i", "j", ot FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 082: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 083: +SELECT "i", "j", ot FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; + +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 085: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSON" j; +--Testcase 086: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; +--Testcase 087: +SELECT "i", "j", oi, j."j" -> oi res FROM "type_JSONB" j; + +--Testcase 088: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 089: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSON" j; +--Testcase 090: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; +--Testcase 091: +SELECT "i", "j", oi, j."j" ->> oi res FROM "type_JSONB" j; + +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 093: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; +--Testcase 095: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" -> oi IS NOT NULL; + +--Testcase 096: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 097: +SELECT "i", "j", oi FROM "type_JSON" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; +--Testcase 099: +SELECT "i", "j", oi FROM "type_JSONB" j WHERE j."j" ->> oi IS NOT NULL; + +-- extraction with arithmetical an other expressions +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 101: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 103: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 105: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 107: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 109: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NOT NULL; +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 111: +SELECT "i", "j", j."j" -> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi + oi1) IS NULL; +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 113: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NOT NULL; +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; +--Testcase 115: +SELECT "i", "j", j."j" ->> (oi + oi1) res, oi + oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + oi1) IS NULL; + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 117: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 119: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 120: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 121: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 122: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 123: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSON" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 124: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 125: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NOT NULL; +--Testcase 126: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 127: +SELECT "i", "j", j."j" -> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" -> (oi - oi1) IS NULL; +--Testcase 128: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 129: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NOT NULL; +--Testcase 130: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; +--Testcase 131: +SELECT "i", "j", j."j" ->> (oi - oi1) res, oi - oi1 expr FROM "type_JSONB" j WHERE j."j" ->> (oi - oi1) IS NULL; + +--Testcase 132: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 133: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 134: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 135: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 136: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 137: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 138: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 139: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSON" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 140: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 141: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NOT NULL; +--Testcase 142: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 143: +SELECT "i", "j", j."j" -> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" -> (oi + 2) IS NULL; +--Testcase 144: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 145: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NOT NULL; +--Testcase 146: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; +--Testcase 147: +SELECT "i", "j", j."j" ->> (oi + 2) res, oi + 2 expr FROM "type_JSONB" j WHERE j."j" ->> (oi + 2) IS NULL; + +--Testcase 148: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 149: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 151: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 153: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 155: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSON" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 157: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NOT NULL; +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 159: +SELECT "i", "j", j."j" -> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" -> (ot || ot1) IS NULL; +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 161: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NOT NULL; +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; +--Testcase 163: +SELECT "i", "j", j."j" ->> (ot || ot1) res, ot || ot1 expr FROM "type_JSONB" j WHERE j."j" ->> (ot || ot1) IS NULL; + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 165: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 167: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 169: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 171: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSON" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 172: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 173: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 174: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 175: +SELECT "i", "j", j."j" -> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" -> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 176: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 177: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NOT NULL; +--Testcase 178: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; +--Testcase 179: +SELECT "i", "j", j."j" ->> (ot || substr(ot1, 2, 1)) res, ot || substr(ot1, 2, 1) expr FROM "type_JSONB" j WHERE j."j" ->> (ot || substr(ot1, 2, 1)) IS NULL; + + +--TCs for SQLite JSON -> format, no sense in PostgreSQL itself +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 201: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 203: +SELECT "i", "j" FROM "type_JSON" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 204: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; +--Testcase 205: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NOT NULL; + +--Testcase 206: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; +--Testcase 207: +SELECT "i", "j" FROM "type_JSONB" j WHERE j."j"->>'$.c[2].f' IS NULL; + +--Testcase 208: +DELETE FROM "type_JSON"; +--Testcase 209: +DELETE FROM "type_JSONB"; +--Testcase 210: +INSERT INTO "type_JSON" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 211: +INSERT INTO "type_JSONB" ("i", "j", ot, oi) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '$', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '$.c', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', 'c', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]', NULL), +(5, '{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '$.c[#-1]', NULL), +(7, '{"a":2,"c":[4,5],"f":7}', '$.e', NULL); +--Testcase 212: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 213: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 214: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; +--Testcase 215: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSON" j WHERE j."j"->>ot IS NULL; + +--Testcase 216: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 217: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NOT NULL; +--Testcase 218: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; +--Testcase 219: +SELECT "i", "j", ot, "j" ->> ot res FROM "type_JSONB" j WHERE j."j"->>ot IS NULL; + +--Testcase 220: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 221: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NOT NULL; +--Testcase 222: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 223: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSON" j WHERE j."j"->ot IS NULL; +--Testcase 224: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 225: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NOT NULL; +--Testcase 226: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +--Testcase 227: +SELECT "i", "j", ot, "j" -> ot res FROM "type_JSONB" j WHERE j."j"->ot IS NULL; +-- end of SQLite right -> ->> operand test + +-- Operators -> ->> in SELECT context +--Testcase 230: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; +--Testcase 231: +SELECT "i", "j"->>ot "r" FROM "type_JSON" j; + +--Testcase 232: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; +--Testcase 233: +SELECT "i", "j"->>ot "r" FROM "type_JSONB" j; + +--Testcase 234: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSON" j; +--Testcase 235: +SELECT "i", "j"->ot "r" FROM "type_JSON" j; + +--Testcase 236: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; +--Testcase 237: +SELECT "i", "j"->ot "r" FROM "type_JSONB" j; + +--Testcase 238: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; +--Testcase 239: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j; + +--Testcase 240: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; +--Testcase 241: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j; + +--Testcase 250: +DELETE FROM "type_JSON"; +--Testcase 251: +DELETE FROM "type_JSONB"; +--Testcase 252: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text; +--Testcase 253: +INSERT INTO "type_JSON" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 254: +ALTER FOREIGN TABLE "type_JSON" ALTER COLUMN "q" TYPE text[]; + +--Testcase 255: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text; +--Testcase 256: +INSERT INTO "type_JSONB" ("i", "j", q, ot) VALUES +(1, '{"a":2,"c":[4,5,{"f":7}]}', '{a}', NULL), +(2, '{"a":2,"c":[4,5,{"f":7}]}', '{c}', NULL), +(3, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2}', NULL), +(4, '{"a":2,"c":[4,5,{"f":7}]}', '{c,2,f}', NULL), +(5, '{"a":2,"c":[4,5],"f":7}', '{c,-1}', NULL), +(6, '{"a":2,"c":[4,5],"f":7}', '{u,8,i}', NULL), +(7, '{"a":2}', '{a}', NULL); +--Testcase 257: +ALTER FOREIGN TABLE "type_JSONB" ALTER COLUMN "q" TYPE text[]; + +--Testcase 260: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; +--Testcase 261: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NULL; + +--Testcase 262: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; +--Testcase 263: +SELECT "i", j."j" #> q "r" FROM "type_JSON" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 264: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; +--Testcase 265 +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NULL; + +--Testcase 266: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; +--Testcase 267: +SELECT "i", j."j" #> q "r" FROM "type_JSONB" j WHERE j."j" #> q IS NOT NULL; + +--Testcase 268: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; +--Testcase 269: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NULL; + +--Testcase 270: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 271: +SELECT "i", j."j" #>> q "r" FROM "type_JSON" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 272: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; +--Testcase 273 +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NULL; + +--Testcase 274: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; +--Testcase 275: +SELECT "i", j."j" #>> q "r" FROM "type_JSONB" j WHERE j."j" #>> q IS NOT NULL; + +--Testcase 276: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; +--Testcase 277: no such - even wrong JSON gives false +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NULL; + +--Testcase 278: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; +--Testcase 279: +SELECT "i", j."j" ?| q "r" FROM "type_JSONB" j WHERE j."j" ?| q IS NOT NULL; + +--Testcase 280: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; +--Testcase 281: no such - even wrong JSON gives false +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NULL; + +--Testcase 282: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; +--Testcase 283: +SELECT "i", j."j" ?& q "r" FROM "type_JSONB" j WHERE j."j" ?& q IS NOT NULL; + +--Testcase 284: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; +--Testcase 285: no such +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" - q IS NULL; + +--Testcase 286: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 287: +SELECT "i", j."j" - q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 288: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; +--Testcase 289: no such +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NULL; + +--Testcase 290: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 291: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 292: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; +--Testcase 293: +SELECT "i", j."j" #- q "r" FROM "type_JSONB" j WHERE j."j" #- q IS NOT NULL; + +--Testcase 294: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 295: +UPDATE "type_JSONB" SET j1 = '{"c":[4,5,{"f":7}]}'::json; +--Testcase 296: +SELECT * FROM "type_JSONB+"; + +--Testcase 297: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 298: +SELECT "i", "j" @> "j1" "r" FROM "type_JSONB" WHERE "j" @> "j1"; +--Testcase 299: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; +--Testcase 300: no such +SELECT "i", "j1" <@ "j" "r" FROM "type_JSONB" WHERE "j" <@ "j1"; + +--Multievel extraction chains +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 302: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSON" j; +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 304: +SELECT "i", "j", j."j"-> 'c' -> 2 ->> 'f' res FROM "type_JSONB" j; +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 306: +SELECT *, "j" -> 'c' -> 2 ->> 'f' res FROM "type_JSON" WHERE i = 1 AND "j" -> 'c' -> 2 ->> 'f' IS NOT NULL; +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; +--Testcase 308: +SELECT *, "j" -> 'q' -> 2 ->> 'r' res FROM "type_JSONB" WHERE i = 1 AND "j" -> 'q' -> 2 ->> 'r' IS NOT NULL; + + +-- UPDATE tests +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 310: +UPDATE "type_JSON" SET j = '{"q":[4,5,{"r":7}]}' WHERE "i" = 1; +--Testcase 311: +SELECT * FROM "type_JSON" WHERE "i" = 1; +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 313: +UPDATE "type_JSONB" SET j = '{"q":[4,5,{"r":7}]}'::json WHERE "i" = 1; +--Testcase 314: +SELECT * FROM "type_JSONB+" WHERE "i" = 1; + + +-- Real GIS data test, data from https://www.wikidata.org/wiki/Q118122043 +-- https://commons.wikimedia.org/wiki/Category:Private_Garden_(Pavlovsk) +-- License of testing data in json_osm_test table: ODbL, © OpenStreetMap contributors +--Testcase 400: +CREATE FOREIGN TABLE json_osm_test ( + wkt text NOT NULL, + osm_type varchar(8) OPTIONS (key 'true') NOT NULL, + osm_id int8 OPTIONS (key 'true') NOT NULL, + t json OPTIONS (column_name 'tags') NULL, + way_nodes text NULL +) SERVER sqlite_svr; + +--Testcase 401: +INSERT INTO json_osm_test VALUES ('SRID=4326;POINT(30.4536193 59.6847624)', 'node', 1198356775, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4522474 59.6851858)', 'node', 1198357028, '{"access": "private", "locked": "yes", "barrier": "gate"}', NULL), + ('SRID=4326;POINT(30.4532025 59.6850113)', 'node', 1738381537, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "description": "Ваза в дендрарии Собственного садика", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529584 59.6849417)', 'node', 3968068680, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526407 59.68497)', 'node', 4487385447, '{"height": "1.5", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "late C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4524943 59.6854502)', 'node', 4912270255, '{"fee": "yes", "access": "customers", "barrier": "gate", "vehicle": "no", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "barrier:personnel": "additional"}', NULL), + ('SRID=4326;POINT(30.452977 59.6847621)', 'node', 7484858507, '{"name": "Неизвестный мужчина", "ref:okn": "781610399040516", "tourism": "artwork", "alt_name": "Спутник Одиссея", "heritage": "2", "historic": "yes", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6522/"}', NULL), + ('SRID=4326;POINT(30.452909 59.6847573)', 'node', 7484858508, '{"name": "Антиной", "ref:okn": "781610399040526", "tourism": "artwork", "alt_name": "Дионис", "heritage": "2", "historic": "yes", "material": "stone", "start_date": "late C18..early C19", "artwork_type": "bust", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6521/"}', NULL), + ('SRID=4326;POINT(30.4529561 59.6848095)', 'node', 8114975053, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528946 59.6848042)', 'node', 8114975054, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528732 59.6848762)', 'node', 8114975055, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529364 59.6848802)', 'node', 8114975056, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528444 59.6851765)', 'node', 8289295956, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527798 59.6851726)', 'node', 8289295957, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528665 59.6850957)', 'node', 8289295958, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528046 59.685091)', 'node', 8289295959, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528947 59.6850172)', 'node', 8289295960, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528301 59.6850118)', 'node', 8289295961, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4529101 59.6849636)', 'node', 8289295962, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528496 59.684959)', 'node', 8289295963, '{"name": "Ваза", "height": "1.5", "name:en": "Vase", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "wikidata": "Q118122044", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4528359 59.6852187)', 'node', 8331430659, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4527605 59.685213)', 'node', 8331430660, '{"height": "2", "ref:okn": "781620399040936", "tourism": "artwork", "historic": "yes", "material": "marble", "start_date": "C18", "artwork_type": "vase"}', NULL), + ('SRID=4326;POINT(30.4523414 59.6851726)', 'node', 8331430663, '{"name": "Сатир", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4523561 59.685141)', 'node', 8331430664, '{"name": "Сатиресса", "height": "1.5", "tourism": "artwork", "historic": "yes", "wikidata": "Q118122105", "start_date": "~1779..1801", "artwork_type": "statue", "artwork:start_date": "C18"}', NULL), + ('SRID=4326;POINT(30.4527994 59.6847007)', 'node', 8566916332, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4528945 59.6847497)', 'node', 8566916333, '{"height": "8", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529784 59.6853519)', 'node', 8895996426, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4529255 59.6853861)', 'node', 8895996427, '{"genus": "Thuja", "height": "1", "natural": "tree", "genus:ru": "Туя", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4525278 59.685471)', 'node', 8895996643, '{"genus": "Tilia", "height": "6", "natural": "tree", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4534153 59.6851412)', 'node', 8899249758, '{"genus": "Elaeagnus", "taxon": "Elaeagnus commutata", "natural": "shrub", "genus:ru": "Лох", "taxon:ru": "Лох серебристый", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4535524 59.6848638)', 'node', 8899249764, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4535202 59.6849613)', 'node', 8899249765, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534934 59.6850486)', 'node', 8899249766, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4534679 59.685136)', 'node', 8899249767, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4528899 59.6851725)', 'node', 8899249768, '{"height": "0.8", "highway": "street_lamp", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530448 59.6850046)', 'node', 8899249769, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4533465 59.6850216)', 'node', 8899249770, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4532205 59.6849417)', 'node', 8899249771, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531776 59.6850839)', 'node', 8899249772, '{"colour": "green", "amenity": "bench", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6851265)', 'node', 8899249773, '{"genus": "Malus", "taxon": "Malus niedzwetzkyana", "height": "5", "natural": "tree", "genus:ru": "Яблоня", "taxon:ru": "Яблоня Недзвецкого", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533043 59.6851928)', 'node', 8899249779, '{"height": "4", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.452916 59.6849894)', 'node', 8899249796, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4528248 59.684983)', 'node', 8899249797, '{"colour": "green", "amenity": "bench", "ref:okn": "781620399040946", "backrest": "yes", "material": "wood"}', NULL), + ('SRID=4326;POINT(30.4531527 59.685139)', 'node', 8899299127, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4529549 59.6850382)', 'node', 8902082041, '{"genus": "Syrínga", "taxon": "Syringa vulgaris", "natural": "shrub", "genus:ru": "Сирень", "taxon:ru": "Сирень обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530139 59.6850101)', 'node', 8902082042, '{"genus": "Amelanchier", "taxon": "Amelanchier canadensis", "natural": "shrub", "genus:ru": "Ирга", "taxon:ru": "Ирга канадская", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530089 59.6850564)', 'node', 8902082048, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529982 59.685072)', 'node', 8902082055, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530213 59.6850872)', 'node', 8902082060, '{"genus": "Picea", "taxon": "Picea glauca", "height": "1.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель сизая", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4529918 59.6851617)', 'node', 8902082061, '{"genus": "Berberis", "taxon": "Berberis vulgaris", "natural": "shrub", "genus:ru": "Барбарис", "taxon:ru": "Барбарис обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530615 59.685137)', 'node', 8902082071, '{"genus": "Paeonia", "taxon": "Paeonia suffruticosa", "natural": "shrub", "genus:ru": "Пион", "taxon:ru": "Пион древовидный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531031 59.6851282)', 'node', 8902082072, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530991 59.6851451)', 'node', 8902082073, '{"genus": "Caragana", "taxon": "Caragana arborescens", "natural": "shrub", "genus:ru": "Карагана", "taxon:ru": "Карагана древовидная", "description": "Акация желтая", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4531977 59.6851532)', 'node', 8902082074, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453207 59.6851336)', 'node', 8902082075, '{"genus": "Thuja", "taxon": "Thuja occidentalis", "height": "1", "natural": "tree", "genus:ru": "Туя", "taxon:ru": "Туя западная", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532426 59.6850926)', 'node', 8902082171, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532694 59.6851157)', 'node', 8902082172, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533707 59.6851035)', 'node', 8902082173, '{"genus": "Hydrangea", "taxon": "Hydrangea paniculata", "natural": "shrub", "genus:ru": "Гортензия", "taxon:ru": "Гортензия метельчатая"}', NULL), + ('SRID=4326;POINT(30.4528986 59.6851502)', 'node', 8902082174, '{"genus": "Quercus", "taxon": "Quercus robur", "natural": "tree", "genus:ru": "Дуб", "taxon:ru": "Дуб черешчатый", "leaf_type": "broadleaved", "denotation": "landmark", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4530486 59.6848994)', 'node', 8904992674, '{"genus": "Viburnum", "taxon": "Viburnum opulus", "natural": "shrub", "genus:ru": "Калина", "taxon:ru": "Калина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532396 59.6848373)', 'node', 8905335421, '{"genus": "Corylus", "taxon": "Corylus avellana", "natural": "shrub", "genus:ru": "Лещина", "taxon:ru": "Лещина обыкновенная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532946 59.684841)', 'node', 8905335422, '{"genus": "Spiraea", "taxon": "Spiraea chamaedryfolia", "natural": "shrub", "genus:ru": "Спирея", "taxon:ru": "Спирея дубравколистная", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533857 59.6849271)', 'node', 8905335423, '{"genus": "Euonymus", "taxon": "Euonymus europaeus", "natural": "shrub", "genus:ru": "Бересклет", "taxon:ru": "Бересклет европейский", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534136 59.6849004)', 'node', 8905335424, '{"genus": "Prunus", "taxon": "Prunus sachalinensis", "height": "5", "natural": "tree", "genus:ru": "Вишня", "taxon:ru": "Вишня сахалинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4533998 59.6848611)', 'node', 8905335425, '{"genus": "Buxus", "taxon": "Buxus sempervirens", "height": "1", "natural": "shrub", "genus:ru": "Самшит", "taxon:ru": "Самшит вечнозелёный", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4534776 59.6848679)', 'node', 8905335426, '{"genus": "Rhamnus", "taxon": "Rhamnus cathartica", "height": "4", "natural": "tree", "genus:ru": "Жостер", "taxon:ru": "Жостер слабительный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4534324 59.6849515)', 'node', 8905335427, '{"genus": "Lonicera", "taxon": "Lonicera caerulea", "natural": "shrub", "genus:ru": "Жимолость", "taxon:ru": "Жимолость синяя", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.453365 59.684981)', 'node', 8905335428, '{"genus": "Philadelphus", "taxon": "Philadelphus coronarius", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник венечный"}', NULL), + ('SRID=4326;POINT(30.4533874 59.6849671)', 'node', 8905335429, '{"genus": "Juniperus", "taxon": "Juniperus sabina", "height": "0.5", "natural": "shrub", "genus:ru": "Можжевельник", "taxon:ru": "Можжевельник казацкий", "leaf_type": "needleleaved", "leaf_cycle": "evergreen"}', NULL), + ('SRID=4326;POINT(30.4531319 59.6849356)', 'node', 8905335430, '{"genus": "Picea", "taxon": "Picea abies", "height": "0.5", "natural": "tree", "genus:ru": "Ель", "taxon:ru": "Ель европейская", "leaf_type": "needleleaved", "leaf_cycle": "evergreen", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532466 59.6848527)', 'node', 8905335431, '{"genus": "Ginkgo", "taxon": "Ginkgo biloba", "height": "2.5", "natural": "tree", "genus:ru": "Гингко", "taxon:ru": "Гинкго двулопастный", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "label"}', NULL), + ('SRID=4326;POINT(30.4532184 59.6848635)', 'node', 8905335468, '{"genus": "Daphne", "taxon": "Daphne mezereum", "natural": "shrub", "genus:ru": "Волчеягодник", "taxon:ru": "Волчеягодник обыкновенный", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4532392 59.6848902)', 'node', 8905335469, '{"height": "3", "natural": "tree", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;POINT(30.4526679 59.6846912)', 'node', 8905558225, '{"height": "3", "highway": "street_lamp", "man_made": "surveillance", "material": "metal", "lamp_type": "electric"}', NULL), + ('SRID=4326;POINT(30.4530347 59.6849253)', 'node', 8906857477, '{"genus": "Philadelphus lemoinei", "taxon": "Philadelphus lemoinei", "natural": "shrub", "genus:ru": "Чубушник", "taxon:ru": "Чубушник Лемуана", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530224 59.6849455)', 'node', 8906857478, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}', NULL), + ('SRID=4326;POINT(30.4530015 59.6847554)', 'node', 8906857479, '{"natural": "tree_stump"}', NULL), + ('SRID=4326;LINESTRING(30.4522584 59.6851734,30.4522474 59.6851858)', 'way', 103807093, '{"highway": "footway", "surface": "compacted"}', '{3968068679,1198357028}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525041 59.6846527,30.4522364 59.6845601,30.4516531 59.6843525,30.4513385 59.6842533,30.4513511 59.6841667)', 'way', 103807103, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{8566824024,12023699867,8114975022,1195141497,4014269128,3186425168}'), + ('SRID=4326;LINESTRING(30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456)', 'way', 103807114, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{1198357004,303515662,8566916345,1198356771,8566916346,1198356889,1198357009,8906857470}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529382 59.6847803,30.4528051 59.6851927,30.4527793 59.6852746,30.4527609 59.6853349,30.4527422 59.6853961,30.4527263 59.6854482,30.4527224 59.6854618)', 'way', 153761053, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068681,8114975050,8114975107,8895975844,8895975845,8895975847,4912270253,1664064412}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4532459 59.6852254,30.45322 59.6852491)', 'way', 153761054, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975105,3968068669}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4528762 59.6851274,30.4530118 59.6851874)', 'way', 153947121, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381541,1665582246}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4529574 59.6848702,30.4531238 59.6848204)', 'way', 153947122, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1738381532,1665582234}'), + ('SRID=4326;LINESTRING(30.4533888 59.6848413,30.4535109 59.6849058,30.4534919 59.684967)', 'way', 153947123, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582235,1738381534,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533267 59.6852228,30.4533391 59.6851996,30.4533483 59.6851876,30.4533556 59.6851828,30.4533653 59.6851769,30.4533784 59.6851717,30.4533901 59.6851678,30.4534147 59.6851629,30.4534315 59.6851615,30.4534524 59.6850941)', 'way', 153947124, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,8114975034,8899249793,8114975035,8902027910,8899249794,8902027909,8899249795,1738381544,8114975036,1665582244}'), + ('SRID=4326;LINESTRING(30.4531795 59.685129,30.4533062 59.6850846,30.4534722 59.6850303,30.4534919 59.684967)', 'way', 153947125, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975075,1665582243,1738381539,1665582240}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4530483 59.6850678,30.4529356 59.6849912)', 'way', 153947126, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,1665582242,8902082170}'), + ('SRID=4326;LINESTRING(30.4529356 59.6849912,30.4530873 59.6849398,30.453213 59.6848988)', 'way', 153947127, '{"highway": "footway", "surface": "fine_gravel"}', '{8902082170,1665582238,8904992643}'), + ('SRID=4326;LINESTRING(30.4532598 59.6849025,30.4533508 59.6849575,30.4534722 59.6850303,30.4534524 59.6850941)', 'way', 153947128, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992648,1665582239,1738381539,1665582244}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4531238 59.6848204,30.4533888 59.6848413,30.4535282 59.6848524)', 'way', 153947130, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1665582234,1665582235,1665582236}'), + ('SRID=4326;LINESTRING(30.4529389 59.6849276,30.4530873 59.6849398,30.4532201 59.6849487,30.4533508 59.6849575,30.4534919 59.684967)', 'way', 153947131, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582237,1665582238,8902082149,1665582239,1665582240}'), + ('SRID=4326;LINESTRING(30.4532657 59.6852057,30.4533062 59.6850846,30.4533306 59.6850189,30.4533508 59.6849575,30.4533888 59.6848413)', 'way', 153947132, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582248,1665582243,8902082150,1665582239,1665582235}'), + ('SRID=4326;LINESTRING(30.4534524 59.6850941,30.4533062 59.6850846,30.4531801 59.6850762,30.4530483 59.6850678,30.452898 59.6850578)', 'way', 153947133, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582244,1665582243,8902082168,1665582242,1665582241}'), + ('SRID=4326;LINESTRING(30.4532234 59.6850226,30.4533062 59.6850846,30.4534147 59.6851629)', 'way', 153947134, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975088,1665582243,1738381544}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4530483 59.6850678,30.4530675 59.6850048,30.4530873 59.6849398,30.4531238 59.6848204)', 'way', 153947135, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,1665582242,8902082151,1665582238,1665582234}'), + ('SRID=4326;LINESTRING(30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858)', 'way', 312745383, '{"barrier": "fence"}', '{1439053672,4912270255,4438910482,8895996664,4438910480,3234125031,4438910477,8893386635,4438910475,8895996665,4438910473,8114975112,8114975111,1198357028}'), + ('SRID=4326;LINESTRING(30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554)', 'way', 315626926, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053649,8895996432,8895996430,1439053648,1439053645,8895996431,1439053641,1439053639}'), + ('SRID=4326;LINESTRING(30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577)', 'way', 317173782, '{"height": "1.5", "barrier": "fence", "material": "metal", "fence_type": "bars"}', '{1653641713,8114975028,8114975027,8566824024}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.4526304 59.6847065,30.4529536 59.6847313,30.453482 59.6847765,30.4535921 59.6847856,30.4535778 59.6848316,30.4534654 59.685163)', 'way', 393601662, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774427,8905543616,3968068681,7927774426,3968068674,8114975049,3968068687}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4530118 59.6851874,30.4532501 59.6852048,30.4532657 59.6852057)', 'way', 393601664, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1665582246,8899299159,1665582248}'), + ('SRID=4326;LINESTRING(30.4528624 59.685176,30.4528762 59.6851274,30.4530483 59.6850678,30.4531752 59.6850205)', 'way', 393601667, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068670,1738381541,1665582242,8114975100}'), + ('SRID=4326;LINESTRING(30.452545 59.6854429,30.4525305 59.6854105,30.4525224 59.6853929,30.4525133 59.6853758,30.4525036 59.6853597,30.4524909 59.6853438,30.4524775 59.6853279,30.4524583 59.6853083,30.4524437 59.6852938,30.4524165 59.6852717,30.4523957 59.6852568,30.452375 59.6852427,30.4523461 59.6852243,30.4523179 59.6852068)', 'way', 393620818, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975116,8895996660,8895996640,4438927787,8895996641,8895996659,8895996642,4438927782,8114975115,8895996661,8895996639,4438927777,8895996638,8114975114}'), + ('SRID=4326;LINESTRING(30.45322 59.6852491,30.4530263 59.6852336,30.4529402 59.6852275,30.4528645 59.6852217)', 'way', 393620820, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{3968068669,8895975857,8895975877,8895975841}'), + ('SRID=4326;LINESTRING(30.4527686 59.6854977,30.4528746 59.6855048)', 'way', 446650486, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{1439053671,1439053674}'), + ('SRID=4326;LINESTRING(30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905)', 'way', 446650506, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053619,8914843795,8895996424,8914843796,1439053616,8914843797,8895996423,8914843798,1439053613,8914843799,8895996422,8895996441,8914843802,8895996421,8914843801,1439053611,8914843800,8895996420,1439053614}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522278 59.6851794)', 'way', 446651403, '{"barrier": "fence"}', '{1198357028,1653641713}'), + ('SRID=4326;LINESTRING(30.4524943 59.6854502,30.452545 59.6854429,30.4525879 59.6854383,30.4527263 59.6854482,30.4528729 59.6854587)', 'way', 500077282, '{"highway": "footway", "surface": "fine_gravel"}', '{4912270255,8114975116,4438928092,4912270253,4438928093}'), + ('SRID=4326;LINESTRING(30.4522474 59.6851858,30.4522167 59.6853009)', 'way', 758868053, '{"highway": "footway"}', '{1198357028,1406921754}'), + ('SRID=4326;LINESTRING(30.4529536 59.6847313,30.4529562 59.6847243)', 'way', 849729200, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068681,8905543615}'), + ('SRID=4326;LINESTRING(30.453482 59.6847765,30.4534851 59.684767)', 'way', 849729201, '{"highway": "footway", "surface": "fine_gravel"}', '{7927774426,8905543614}'), + ('SRID=4326;LINESTRING(30.452599 59.6846895,30.4525675 59.6846756,30.45256 59.6846723,30.452568 59.6846486,30.4535014 59.6847265,30.4534976 59.6847368)', 'way', 849729202, '{"highway": "footway", "surface": "fine_gravel"}', '{3968068677,12023732269,8566916344,8566916343,8566916342,7927774425}'), + ('SRID=4326;LINESTRING(30.4528543 59.6851747,30.4529071 59.6850026,30.4529249 59.685004,30.4529333 59.6849769,30.452917 59.6849756,30.4529721 59.6847963)', 'way', 871154683, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8114975041,8899249805,8899249804,8899249803,8899249802,8114975042}'), + ('SRID=4326;LINESTRING(30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274,30.4526587 59.6847165)', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8114975046,8114975047,8906857474,8906857473,8114975046}'), + ('SRID=4326;LINESTRING(30.4530118 59.6851874,30.4531264 59.6851489)', 'way', 871154687, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582246,8114975076}'), + ('SRID=4326;LINESTRING(30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257)', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975078,8114975073,8114975074,8114975057,8114975058,8114975059,8114975075,8114975060,8114975061,8114975067,8114975068,8114975069,8114975077,8114975070,8114975062,8114975063,8114975064,8114975076,8114975065,8114975066,8114975071,8114975072,8114975078}'), + ('SRID=4326;LINESTRING(30.4532501 59.6852048,30.4531713 59.6851525)', 'way', 871154689, '{"highway": "footway", "surface": "fine_gravel"}', '{8899299159,8114975077}'), + ('SRID=4326;LINESTRING(30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998)', 'way', 871154691, '{"highway": "footway"}', '{8114975097,8114975079,8114975080,8114975081,8114975082,8114975083,8114975099,8114975084,8114975085,8114975086,8114975087,8114975088,8114975089,8114975090,8114975091,8114975092,8114975100,8114975093,8114975094,8114975095,8114975096,8114975097}'), + ('SRID=4326;LINESTRING(30.4529775 59.684808,30.4529574 59.6848702,30.4530873 59.6849398,30.4531787 59.684998)', 'way', 871154694, '{"highway": "footway", "surface": "fine_gravel"}', '{1664064416,1738381532,1665582238,8114975097}'), + ('SRID=4326;LINESTRING(30.4532281 59.6850005,30.4533508 59.6849575,30.4535109 59.6849058,30.4535282 59.6848524)', 'way', 871154695, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975099,1665582239,1738381534,1665582236}'), + ('SRID=4326;LINESTRING(30.4532459 59.6852254,30.4528051 59.6851927,30.4522785 59.6851511)', 'way', 871154698, '{"highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8114975105,8114975107,8114975109}'), + ('SRID=4326;LINESTRING(30.4526095 59.6853751,30.4526201 59.6853832,30.4527025 59.6853899,30.4527175 59.6853841,30.4527302 59.6853414,30.4527195 59.685334,30.4526348 59.6853281,30.4526225 59.6853328,30.4526095 59.6853751)', 'way', 871154699, '{"landuse": "flowerbed"}', '{8114975123,8114975124,8114975125,8895996607,8895996606,8114975126,8114975127,8114975181,8114975123}'), + ('SRID=4326;LINESTRING(30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686)', 'way', 871154701, '{"landuse": "flowerbed"}', '{8114975136,8114975137,8114975138,8114975139,8114975140,8114975141,8114975142,8114975143,8114975136}'), + ('SRID=4326;LINESTRING(30.4525419 59.6853075,30.4525505 59.6853142,30.4526031 59.6853185,30.4526157 59.6853129,30.4526268 59.6852724,30.4526177 59.6852659,30.4525671 59.6852621,30.452555 59.6852672,30.4525419 59.6853075)', 'way', 871154702, '{"landuse": "flowerbed"}', '{8114975144,8114975145,8114975146,8114975147,8114975148,8114975149,8114975150,8114975151,8114975144}'), + ('SRID=4326;LINESTRING(30.4526478 59.6852554,30.4526557 59.6852612,30.452739 59.6852678,30.4527533 59.685262,30.452765 59.685222,30.4527443 59.68522,30.4527459 59.685216,30.452673 59.6852102,30.4526587 59.6852148,30.4526478 59.6852554)', 'way', 871154706, '{"landuse": "flowerbed"}', '{8114975172,8114975173,8114975174,8114975175,8114975176,8114975177,8114975178,8114975179,8114975180,8114975172}'), + ('SRID=4326;LINESTRING(30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)', 'way', 872998899, '{"landuse": "flowerbed"}', '{8129422266,8129422267,8129422268,8129422269,8129422270,8129422271,8129422272,8895996472,8129422273,8895996471,8129422266}'), + ('SRID=4326;LINESTRING(30.4536402 59.684764,30.4536193 59.6847624,30.4536067 59.6847614)', 'way', 891865282, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{1635198216,1198356775,8289295975}'), + ('SRID=4326;LINESTRING(30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232)', 'way', 922841960, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824024,1653641402,8566824025,8566824026}'), + ('SRID=4326;LINESTRING(30.453531 59.6847593,30.4531199 59.6847256)', 'way', 922854851, '{"height": "8", "natural": "tree_row", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{5002059748,5002059751}'), + ('SRID=4326;LINESTRING(30.4526262 59.684701,30.452599 59.6846895)', 'way', 922854852, '{"highway": "steps"}', '{7927774427,3968068677}'), + ('SRID=4326;LINESTRING(30.4536067 59.6847614,30.4535894 59.6847601)', 'way', 922854853, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{8289295975,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4526552 59.6847274,30.4526587 59.6847165,30.4528767 59.6847343,30.4528732 59.6847452,30.4526552 59.6847274)))', 'way', 871154684, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531197 59.6851398,30.4531205 59.6851349,30.4531241 59.6851304,30.4531325 59.6851257,30.4531378 59.6851238,30.4531466 59.6851223,30.4531559 59.6851221,30.453165 59.6851233,30.453173 59.6851256,30.4531795 59.685129,30.4531835 59.6851328,30.4531855 59.685137,30.4531853 59.6851413,30.4531829 59.6851454,30.4531786 59.6851491,30.4531713 59.6851525,30.4531634 59.6851545,30.4531533 59.6851554,30.4531431 59.6851547,30.4531339 59.6851525,30.4531264 59.6851489,30.4531217 59.6851446,30.4531197 59.6851398)))', 'way', 871154688, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531682 59.6850102,30.4531694 59.6850057,30.453173 59.6850015,30.4531787 59.684998,30.4531868 59.6849952,30.4531962 59.6849937,30.453206 59.6849937,30.4532145 59.684995,30.453222 59.6849973,30.4532281 59.6850005,30.4532323 59.6850046,30.4532341 59.6850091,30.4532335 59.6850137,30.4532298 59.6850185,30.4532234 59.6850226,30.4532151 59.6850253,30.4532056 59.6850267,30.4531956 59.6850267,30.4531843 59.6850246,30.4531752 59.6850205,30.45317 59.6850157,30.4531682 59.6850102)))', 'way', 871154691, '{"highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526095 59.6853751,30.4526225 59.6853328,30.4526348 59.6853281,30.4527195 59.685334,30.4527302 59.6853414,30.4527175 59.6853841,30.4527025 59.6853899,30.4526201 59.6853832,30.4526095 59.6853751)))', 'way', 871154699, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526283 59.6853139,30.4526398 59.6852734,30.4526535 59.6852686,30.4527368 59.6852749,30.4527467 59.6852817,30.4527358 59.6853225,30.4527215 59.6853281,30.4526382 59.6853213,30.4526283 59.6853139)))', 'way', 871154701, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525419 59.6853075,30.452555 59.6852672,30.4525671 59.6852621,30.4526177 59.6852659,30.4526268 59.6852724,30.4526157 59.6853129,30.4526031 59.6853185,30.4525505 59.6853142,30.4525419 59.6853075)))', 'way', 871154702, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526478 59.6852554,30.4526587 59.6852148,30.452673 59.6852102,30.4527459 59.685216,30.4527443 59.68522,30.452765 59.685222,30.4527533 59.685262,30.452739 59.6852678,30.4526557 59.6852612,30.4526478 59.6852554)))', 'way', 871154706, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525308 59.6853272,30.4525479 59.6853207,30.452602 59.6853253,30.4526097 59.6853317,30.4525977 59.6853735,30.4525857 59.6853804,30.4525671 59.6853795,30.452562 59.6853695,30.4525568 59.6853608,30.4525449 59.685344,30.4525308 59.6853272)))', 'way', 872998899, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;LINESTRING(30.4521596 59.6854203,30.4524943 59.6854502)', 'way', 961421780, '{"highway": "footway", "surface": "fine_gravel"}', '{8893386627,4912270255}'), + ('SRID=4326;LINESTRING(30.4533818 59.6852214,30.4533763 59.68521)', 'way', 961717566, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053598,1439053596}'), + ('SRID=4326;LINESTRING(30.4534979 59.6851951,30.4535038 59.6852069)', 'way', 961717567, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053589,1439053591}'), + ('SRID=4326;LINESTRING(30.4533763 59.68521,30.4534979 59.6851951)', 'way', 961717568, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053596,1439053589}'), + ('SRID=4326;LINESTRING(30.4527378 59.6852117,30.4526559 59.6852052,30.4525684 59.6851982,30.4524641 59.6851898,30.4522584 59.6851734)', 'way', 961717569, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975842,8895975876,8895975873,8895975858,3968068679}'), + ('SRID=4326;LINESTRING(30.4530032 59.685292,30.453022 59.6852839,30.4530407 59.6852758,30.4530635 59.68527,30.4530877 59.685267,30.4531091 59.6852663,30.4531333 59.6852683,30.4531547 59.6852744,30.45322 59.6852491)', 'way', 961717570, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975875,8895975856,8895975855,8895975850,8895975854,8895975853,8895975852,8895975851,3968068669}'), + ('SRID=4326;LINESTRING(30.4524419 59.6852441,30.452456 59.6851977,30.4524483 59.6851915,30.4523702 59.6851856,30.4523568 59.6851898,30.4523826 59.6852055,30.4524088 59.6852218,30.4524248 59.6852328,30.4524419 59.6852441)', 'way', 961717571, '{"landuse": "flowerbed"}', '{8895975865,8895975864,8895975863,8895975862,8895975859,8895975861,8895975860,8895975838,8895975865}'), + ('SRID=4326;LINESTRING(30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946)', 'way', 961717572, '{"landuse": "flowerbed"}', '{8895975872,8895975871,8895975870,8895975869,8895975868,8895975867,8895975866,8895975872}'), + ('SRID=4326;LINESTRING(30.4530263 59.6852336,30.4530032 59.685292,30.4529231 59.6852858,30.4527793 59.6852746,30.452638 59.6852636,30.4525513 59.6852568,30.4524466 59.6852487,30.4524641 59.6851898)', 'way', 961717573, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975857,8895975875,8895975843,8895975844,8895975848,8895975846,8895975874,8895975858}'), + ('SRID=4326;LINESTRING(30.4529402 59.6852275,30.4529231 59.6852858,30.4529053 59.6853463,30.4528865 59.6854078)', 'way', 961717574, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975877,8895975843,8895975880,8895975878}'), + ('SRID=4326;LINESTRING(30.4526559 59.6852052,30.452638 59.6852636,30.4526195 59.6853238,30.4526009 59.6853847,30.4527422 59.6853961,30.4528865 59.6854078)', 'way', 961717575, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975876,8895975848,8895975849,8895975879,8895975847,8895975878}'), + ('SRID=4326;LINESTRING(30.4525684 59.6851982,30.4525513 59.6852568,30.4525338 59.685317,30.4526195 59.6853238,30.4527609 59.6853349,30.4529053 59.6853463)', 'way', 961717576, '{"access": "private", "highway": "footway", "surface": "fine_gravel", "historic": "yes"}', '{8895975873,8895975846,8895975881,8895975849,8895975845,8895975880}'), + ('SRID=4326;LINESTRING(30.4527487 59.6852082,30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082)', 'way', 961717577, '{"landuse": "flowerbed"}', '{8895975885,8895975884,8895975883,8895975882,8895975885}'), + ('SRID=4326;LINESTRING(30.4532064 59.6852443,30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443)', 'way', 961717578, '{"landuse": "flowerbed"}', '{8895975889,8895975888,8895975887,8895975886,8895975889}'), + ('SRID=4326;LINESTRING(30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696)', 'way', 961717579, '{"landuse": "flowerbed"}', '{8895975901,8895975902,8895975900,8895975903,8895975891,8895975890,8895975901}'), + ('SRID=4326;LINESTRING(30.4530554 59.6852658,30.4530414 59.6852392,30.453028 59.6852429,30.4530143 59.6852802,30.4530288 59.6852733,30.453041 59.6852693,30.4530554 59.6852658)', 'way', 961717580, '{"landuse": "flowerbed"}', '{8895975898,8895975895,8895975896,8895975907,8895975897,8895975906,8895975898}'), + ('SRID=4326;LINESTRING(30.4530632 59.6852641,30.4530782 59.6852621,30.4530921 59.6852616,30.4531031 59.6852618,30.4531172 59.6852446,30.4530501 59.6852392,30.4530632 59.6852641)', 'way', 961717581, '{"landuse": "flowerbed"}', '{8895975905,8895975899,8895975904,8895975892,8895975893,8895975894,8895975905}'), + ('SRID=4326;LINESTRING(30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204)', 'way', 961717582, '{"height": "7", "barrier": "fence", "fence_type": "bars", "min_height": "6"}', '{1439053627,8914843793,8895996425,8914843794,1439053619}'), + ('SRID=4326;LINESTRING(30.4525812 59.6854845,30.4526564 59.6854895)', 'way', 961717593, '{"height": "2", "barrier": "fence", "material": "stone", "fence_type": "bars", "min_height": "1"}', '{8895996555,1439053669}'), + ('SRID=4326;LINESTRING(30.4527747 59.6854387,30.4528506 59.685445,30.4528681 59.6854402,30.4528755 59.6854172,30.4528654 59.6854091,30.4527852 59.6854026,30.4527687 59.6854078,30.4527618 59.6854305,30.4527747 59.6854387)', 'way', 961717594, '{"landuse": "flowerbed"}', '{8895996465,8895996464,8895996463,8895996462,8895996461,8895996460,8895996459,8895996458,8895996465}'), + ('SRID=4326;LINESTRING(30.4525201 59.6853123,30.4525328 59.6853069,30.4525442 59.6852666,30.4525351 59.6852597,30.4524557 59.6852538,30.4524775 59.6852724,30.4524969 59.6852906,30.4525201 59.6853123)', 'way', 961717595, '{"landuse": "flowerbed"}', '{8895996470,8895996469,8895996468,8895996467,8895996466,8895996428,8895996429,8895996470}'), + ('SRID=4326;LINESTRING(30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969,30.4523418 59.6851889)', 'way', 961717596, '{"landuse": "grass"}', '{8895996495,8895975839,8895996483,8895996484,8895996485,8895996486,8895996487,8895996488,8895996489,8895996490,8895996491,8895996492,8895996493,8895996494,8895996496,8895996473,8895996479,8895996480,8895996474,8895996509,8895996508,8895996507,8895996506,8895996505,8895996504,8895996503,8895996502,8895996501,8895996500,8895996499,8895996498,8895996497,8895996478,8895996495}'), + ('SRID=4326;LINESTRING(30.4523081 59.6852118,30.4522803 59.6851945,30.4522795 59.6852157,30.4523143 59.6852356,30.4523427 59.6852536,30.4523628 59.6852673,30.4523827 59.6852816,30.4524087 59.6853027,30.4524225 59.6853163,30.4524411 59.6853354,30.452454 59.6853507,30.452466 59.6853657,30.4524751 59.6853808,30.4524839 59.6853973,30.4524918 59.6854125,30.4524982 59.6854272,30.452501 59.6854325,30.4525097 59.6854362,30.4525224 59.6854348,30.4525257 59.6854303,30.4525231 59.6854242,30.4525171 59.6854097,30.4525091 59.6853943,30.4525002 59.6853776,30.4524909 59.685362,30.4524785 59.6853465,30.4524653 59.6853309,30.4524465 59.6853116,30.4524322 59.6852976,30.4524056 59.685276,30.4523853 59.6852614,30.4523649 59.6852475,30.4523362 59.6852293,30.4523081 59.6852118)', 'way', 961717597, '{"landuse": "grass"}', '{8895996522,8895996477,8895996536,8895996524,8895996525,8895996526,8895996527,8895996528,8895996529,8895996530,8895996531,8895996532,8895996533,8895996534,8895996535,8895996537,8895996482,8895996476,8895996481,8895996523,8895996475,8895996521,8895996520,8895996519,8895996518,8895996517,8895996516,8895996515,8895996514,8895996513,8895996512,8895996511,8895996510,8895996522}'), + ('SRID=4326;LINESTRING(30.4526076 59.685425,30.4526842 59.6854313,30.4527032 59.6854269,30.4527112 59.6854034,30.4527003 59.6853955,30.4526196 59.6853891,30.4526042 59.6853942,30.4525975 59.6854176,30.4526076 59.685425)', 'way', 961717598, '{"landuse": "flowerbed"}', '{8895996545,8895996544,8895996543,8895996542,8895996541,8895996540,8895996539,8895996538,8895996545}'), + ('SRID=4326;LINESTRING(30.4528639 59.685494,30.4528702 59.6854731,30.4527911 59.6854671,30.4527849 59.685488,30.4528639 59.685494)', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996549,8895996548,8895996547,8895996546,8895996549}'), + ('SRID=4326;LINESTRING(30.4526433 59.6854773,30.4526495 59.6854564,30.4525705 59.6854504,30.4525642 59.6854713,30.4526433 59.6854773)', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996553,8895996552,8895996551,8895996550,8895996553}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528709 59.6855164)', 'way', 961717601, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,8895996554}'), + ('SRID=4326;LINESTRING(30.4529138 59.6853368,30.4529235 59.6853445,30.4529678 59.6853472,30.4529853 59.6853413,30.4529963 59.6853005,30.4529866 59.6852936,30.4529427 59.6852903,30.4529263 59.6852951,30.4529138 59.6853368)', 'way', 961717602, '{"landuse": "flowerbed"}', '{8895996564,8895996563,8895996562,8895996561,8895996560,8895996559,8895996558,8895996557,8895996564}'), + ('SRID=4326;LINESTRING(30.452933 59.6852753,30.4529441 59.6852838,30.4529886 59.6852873,30.453002 59.6852821,30.4530171 59.6852433,30.4530088 59.6852371,30.4529582 59.685233,30.4529444 59.6852374,30.452933 59.6852753)', 'way', 961717603, '{"landuse": "flowerbed"}', '{8895996572,8895996571,8895996570,8895996569,8895996568,8895996567,8895996566,8895996565,8895996572}'), + ('SRID=4326;LINESTRING(30.4525595 59.6852465,30.4525692 59.6852544,30.4526207 59.6852585,30.4526333 59.6852538,30.452645 59.6852146,30.4526353 59.6852076,30.4525847 59.6852036,30.4525709 59.685208,30.4525595 59.6852465)', 'way', 961717604, '{"landuse": "flowerbed"}', '{8895996580,8895996579,8895996578,8895996577,8895996576,8895996575,8895996574,8895996573,8895996580}'), + ('SRID=4326;LINESTRING(30.452817 59.6852667,30.4528288 59.6852748,30.4529066 59.6852809,30.45292 59.6852751,30.4529319 59.6852358,30.4529216 59.6852291,30.452851 59.685224,30.4528493 59.6852281,30.452831 59.6852267,30.452817 59.6852667)', 'way', 961717605, '{"landuse": "flowerbed"}', '{8895996589,8895996588,8895996587,8895996586,8895996585,8895996584,8895996581,8895996583,8895996582,8895996589}'), + ('SRID=4326;LINESTRING(30.4527946 59.6853272,30.4528053 59.6853349,30.4528878 59.6853416,30.4529031 59.6853359,30.4529154 59.6852941,30.4529042 59.6852874,30.4528247 59.6852816,30.4528087 59.6852864,30.4527946 59.6853272)', 'way', 961717606, '{"landuse": "flowerbed"}', '{8895996597,8895996596,8895996595,8895996594,8895996593,8895996592,8895996591,8895996590,8895996597}'), + ('SRID=4326;LINESTRING(30.4527745 59.6853889,30.4527865 59.6853969,30.4528677 59.6854032,30.4528839 59.6853982,30.4528953 59.6853552,30.4528845 59.6853477,30.4528052 59.6853419,30.4527899 59.6853454,30.4527745 59.6853889)', 'way', 961717607, '{"landuse": "flowerbed"}', '{8895996605,8895996604,8895996603,8895996602,8895996601,8895996600,8895996599,8895996598,8895996605}'), + ('SRID=4326;LINESTRING(30.452565 59.6854206,30.4525598 59.6854071,30.4525516 59.6853892,30.4525422 59.6853716,30.4525319 59.6853544,30.4525184 59.6853376,30.4525045 59.6853211,30.4524848 59.6853009,30.4524693 59.6852857,30.4524408 59.6852624,30.4524192 59.685247,30.4523979 59.6852324,30.4523685 59.6852137,30.4523402 59.6851962)', 'way', 961717608, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996623,8895996621,8895996620,8895996619,8895996618,8895996617,8895996616,8895996615,8895996614,8895996613,8895996612,8895996611,8895996610,8895996622}'), + ('SRID=4326;LINESTRING(30.4525109 59.6854262,30.4525044 59.6854114,30.4524965 59.6853961,30.4524877 59.6853796,30.4524784 59.6853642,30.4524662 59.6853489,30.4524532 59.6853335,30.4524345 59.6853143,30.4524204 59.6853005,30.4523942 59.6852791,30.452374 59.6852647,30.4523538 59.6852509,30.4523252 59.6852327,30.4522972 59.6852153)', 'way', 961717609, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8895996637,8895996635,8895996634,8895996633,8895996632,8895996631,8895996630,8895996629,8895996628,8895996627,8895996626,8895996625,8895996624,8895996636}'), + ('SRID=4326;LINESTRING(30.4523179 59.6852068,30.4522881 59.6851891,30.4522584 59.6851734,30.4522785 59.6851511,30.4525958 59.6847532,30.4529382 59.6847803,30.4535778 59.6848316)', 'way', 961717610, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975114,8895996608,3968068679,8114975109,8114975051,8114975050,8114975049}'), + ('SRID=4326;LINESTRING(30.4527224 59.6854618,30.4527166 59.6854798)', 'way', 961717612, '{"highway": "steps", "incline": "up", "surface": "paving_stones"}', '{1664064412,8895996662}'), + ('SRID=4326;LINESTRING(30.4534116 59.6851536,30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536)', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249763,8899249762,8899249761,8899249760,8899249759,8899249763}'), + ('SRID=4326;LINESTRING(30.4535137 59.6851734,30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437)', 'way', 962062988, '{"source:taxon": "board"}', '{8899249777,8899249776,8899249775,8899249774}'), + ('SRID=4326;LINESTRING(30.4534505 59.6851512,30.4535484 59.6848425)', 'way', 962062989, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.5", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8899249781,8899249780}'), + ('SRID=4326;LINESTRING(30.4532761 59.6852013,30.4533137 59.6852128,30.453319 59.6851999,30.4533257 59.6851898,30.4533338 59.6851796,30.4533458 59.6851715,30.4533606 59.6851647,30.453378 59.6851586,30.4533941 59.6851559,30.4533211 59.6851024,30.4533083 59.6851038,30.4532761 59.6852013)', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249792,8899249791,8899249790,8899249789,8899249788,8899249787,8899249786,8899249785,8899249784,8899249783,8899249782,8899249792}'), + ('SRID=4326;LINESTRING(30.4534315 59.6851615,30.4534654 59.685163)', 'way', 962062991, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975036,3968068687}'), + ('SRID=4326;LINESTRING(30.45277 59.6851675,30.4528221 59.6849965,30.4528061 59.6849952,30.4528148 59.6849678,30.4528309 59.6849691,30.4528877 59.684789)', 'way', 962062992, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "source:taxon": "board", "species:wikidata": "Q162750"}', '{8899249807,8899249801,8899249800,8899249799,8899249798,8899249806}'), + ('SRID=4326;LINESTRING(30.4530825 59.6850727,30.4530768 59.6850789,30.4531357 59.6851196,30.4531475 59.6851179,30.4531599 59.6851179,30.4531731 59.6851201,30.4531813 59.685123,30.4532721 59.6850914,30.45327 59.6850856,30.4530825 59.6850727)', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899249816,8899249815,8899249814,8899249813,8899249812,8899249811,8899249810,8899249809,8899249808,8899249816}'), + ('SRID=4326;LINESTRING(30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148)', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299126,8899299125,8899299124,8899299123,8899299122,8899299121,8899299120,8899299119,8899299118,8899299117,8899299126}'), + ('SRID=4326;LINESTRING(30.4531566 59.6851458,30.4531627 59.6851441,30.4531665 59.6851411,30.4531672 59.6851376,30.4531645 59.6851343,30.4531591 59.685132,30.4531523 59.6851313,30.4531455 59.6851322,30.4531404 59.6851346,30.4531381 59.685138,30.4531391 59.6851415,30.4531433 59.6851444,30.4531496 59.6851459,30.4531566 59.6851458)', 'way', 962062995, '{"landuse": "grass"}', '{8899299139,8899299138,8899299137,8899299136,8899299135,8899299134,8899299133,8899299132,8899299131,8899299130,8899299129,8899299128,8899299140,8899299139}'), + ('SRID=4326;LINESTRING(30.4531836 59.6851532,30.45325 59.6851972,30.4532587 59.6851977,30.4532923 59.6851023,30.4532804 59.6850981,30.4531914 59.68513,30.4531946 59.6851353,30.453195 59.6851401,30.4531936 59.6851444,30.45319 59.6851488,30.4531836 59.6851532)', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299150,8899299149,8899299141,8899299148,8899299142,8899299147,8899299146,8899299145,8899299144,8899299143,8899299150}'), + ('SRID=4326;LINESTRING(30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8899299158,8899299157,8899299156,8899299155,8899299154,8899299153,8899299152,8899299151,8899249778,8899299158}'), + ('SRID=4326;LINESTRING(30.4532162 59.6852145,30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145)', 'way', 962062998, '{"landuse": "grass"}', '{8899299165,8899299164,8899299163,8899299161,8899299160,8899299162,8899299165}'), + ('SRID=4326;LINESTRING(30.4532627 59.6852077,30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077)', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', '{8902082028,8902082027,8902082026,8902082025,8902082024,8902082023,8902082022,8902082021,8902082020,8902027911,8902082019,8902082018,8902082017,8902027912,8902027916,8902027913,8902027915,8902027914,8902082028}'), + ('SRID=4326;LINESTRING(30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082032,8902082031,8902082030,8902082029,8902082032}'), + ('SRID=4326;LINESTRING(30.4529465 59.6849826,30.4530583 59.6849454,30.4530566 59.6849397,30.4529452 59.6849315,30.4529338 59.6849691,30.4529492 59.6849698,30.4529465 59.6849826)', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082038,8902082037,8902082036,8902082035,8902082034,8902082033,8902082038}'), + ('SRID=4326;LINESTRING(30.4530344 59.685052,30.4530456 59.6850508,30.4530757 59.684955,30.4530662 59.6849507,30.4529465 59.6849918,30.4530344 59.685052)', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082047,8902082046,8902082045,8902082044,8902082043,8902082047}'), + ('SRID=4326;LINESTRING(30.4529083 59.6850544,30.4530153 59.6850613,30.4530221 59.685056,30.4529398 59.6850009,30.4529378 59.6850121,30.4529184 59.6850114,30.4529083 59.6850544)', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082054,8902082053,8902082052,8902082051,8902082050,8902082049,8902082054}'), + ('SRID=4326;LINESTRING(30.4528875 59.6851184,30.4530138 59.6850731,30.4530125 59.6850679,30.4529043 59.6850625,30.4528875 59.6851184)', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082059,8902082058,8902082057,8902082056,8902082059}'), + ('SRID=4326;LINESTRING(30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789)', 'way', 962382766, '{"landuse": "grass"}', '{8902082065,8902082064,8902082063,8902082062,8902082065}'), + ('SRID=4326;LINESTRING(30.4529896 59.6851748,30.4530072 59.6851719,30.4530311 59.6850841,30.4530206 59.6850798,30.4528885 59.6851275,30.4529896 59.6851748)', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082070,8902082069,8902082068,8902082067,8902082066,8902082070}'), + ('SRID=4326;LINESTRING(30.4533332 59.6850719,30.4534612 59.68503,30.4533655 59.6849715,30.4533546 59.6849733,30.4533227 59.6850682,30.4533332 59.6850719)', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082080,8902082079,8902082078,8902082077,8902082076,8902082080}'), + ('SRID=4326;LINESTRING(30.4533437 59.685083,30.4534444 59.6850899,30.4534619 59.6850382,30.4533411 59.685078,30.4533437 59.685083)', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082084,8902082083,8902082082,8902082081,8902082084}'), + ('SRID=4326;LINESTRING(30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173)', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082090,8902082089,8902082088,8902082087,8902082086,8902082085,8902082090}'), + ('SRID=4326;LINESTRING(30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113)', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082096,8902082095,8902082094,8902082093,8902082092,8902082091,8902082096}'), + ('SRID=4326;LINESTRING(30.4532258 59.6849527,30.4532116 59.6849902,30.4532207 59.684992,30.4532298 59.6849953,30.4533219 59.6849634,30.4533191 59.6849588,30.4532258 59.6849527)', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082102,8902082101,8902082100,8902082099,8902082098,8902082097,8902082102}'), + ('SRID=4326;LINESTRING(30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082108,8902082107,8902082106,8902082105,8902082104,8902082103,8902082108}'), + ('SRID=4326;LINESTRING(30.4530763 59.6850024,30.4531619 59.6850065,30.4531647 59.6850018,30.4531695 59.6849976,30.4531032 59.6849548,30.453091 59.6849565,30.4530763 59.6850024)', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082109,8902082114,8902082113,8902082112,8902082111,8902082110,8902082109}'), + ('SRID=4326;LINESTRING(30.4530716 59.6850547,30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547)', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082120,8902082119,8902082118,8902082117,8902082116,8902082115,8902082120}'), + ('SRID=4326;LINESTRING(30.4531735 59.6850722,30.4531863 59.6850287,30.4531799 59.6850271,30.4531749 59.6850252,30.4530791 59.6850599,30.453083 59.685065,30.4531735 59.6850722)', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082126,8902082125,8902082124,8902082123,8902082122,8902082121,8902082126}'), + ('SRID=4326;LINESTRING(30.4531903 59.6850727,30.4532727 59.6850781,30.4532816 59.6850715,30.4532223 59.6850274,30.453211 59.6850297,30.453201 59.6850303,30.4531903 59.6850727)', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', '{8902082132,8902082131,8902082130,8902082129,8902082128,8902082127,8902082132}'), + ('SRID=4326;LINESTRING(30.453206 59.6849937,30.4532201 59.6849487)', 'way', 962382778, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975081,8902082149}'), + ('SRID=4326;LINESTRING(30.4532335 59.6850137,30.4533306 59.6850189)', 'way', 962382779, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975086,8902082150}'), + ('SRID=4326;LINESTRING(30.4531682 59.6850102,30.4530675 59.6850048)', 'way', 962382780, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975094,8902082151}'), + ('SRID=4326;LINESTRING(30.4531253 59.6850083,30.4531256 59.6850158,30.4531288 59.6850232,30.4531349 59.6850302,30.4531434 59.6850364,30.4531543 59.6850416,30.4531669 59.6850457,30.4531809 59.6850485,30.4531957 59.6850498,30.4532107 59.6850496,30.4532253 59.685048,30.4532391 59.685045,30.4532514 59.6850406,30.4532618 59.6850352,30.4532699 59.6850288,30.4532753 59.6850217,30.4532779 59.6850143,30.4532776 59.6850067,30.4532744 59.6849993,30.4532684 59.6849924,30.4532598 59.6849862,30.453249 59.6849809,30.4532363 59.6849768,30.4532224 59.6849741,30.4532076 59.6849728,30.4531926 59.6849729,30.4531779 59.6849745,30.4531642 59.6849776,30.4531519 59.6849819,30.4531415 59.6849874,30.4531334 59.6849938,30.4531279 59.6850008,30.4531253 59.6850083)', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8902082167,8902082134,8902082166,8902082133,8902082165,8902082148,8902082164,8902082147,8902082163,8902082146,8902082162,8902082145,8902082161,8902082144,8902082160,8902082143,8902082159,8902082142,8902082158,8902082141,8902082157,8902082140,8902082156,8902082139,8902082155,8902082138,8902082154,8902082137,8902082153,8902082136,8902082152,8902082135,8902082167}'), + ('SRID=4326;LINESTRING(30.4531956 59.6850267,30.4531801 59.6850762)', 'way', 962382782, '{"highway": "footway", "surface": "fine_gravel"}', '{8114975091,8902082168}'), + ('SRID=4326;LINESTRING(30.452898 59.6850578,30.4529124 59.6850066,30.4529307 59.6850078,30.4529356 59.6849912,30.4529412 59.6849735,30.4529245 59.6849722,30.4529389 59.6849276)', 'way', 962382783, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582241,1738381535,8902082040,8902082170,8902082039,8902082169,1665582237}'), + ('SRID=4326;LINESTRING(30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877)', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992660,8904992659,8904992658,8904992657,8904992656,8904992655,8904992654,8904992653,8904992652,8904992651,8904992650,8904992649,8904992648,8904992647,8904992646,8904992645,8904992644,8904992643,8904992642,8904992641,8904992640,8904992639,8904992660}'), + ('SRID=4326;LINESTRING(30.4532432 59.6848971,30.4532493 59.6848954,30.4532531 59.6848924,30.4532538 59.6848889,30.4532511 59.6848856,30.4532457 59.6848833,30.4532389 59.6848826,30.4532321 59.6848835,30.453227 59.684886,30.4532247 59.6848893,30.4532257 59.6848928,30.4532299 59.6848957,30.4532362 59.6848972,30.4532432 59.6848971)', 'way', 962678726, '{"landuse": "grass"}', '{8904992673,8904992672,8904992671,8904992670,8904992669,8904992668,8904992667,8904992666,8904992665,8904992664,8904992663,8904992662,8904992661,8904992673}'), + ('SRID=4326;LINESTRING(30.4530998 59.6849248,30.4531105 59.684928,30.4532056 59.6848974,30.4532029 59.6848932,30.4532023 59.6848877,30.4532043 59.6848829,30.4532098 59.6848776,30.4531384 59.6848341,30.4531253 59.6848349,30.4530998 59.6849248)', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992682,8904992681,8904992680,8904992679,8904992637,8904992678,8904992677,8904992676,8904992675,8904992682}'), + ('SRID=4326;LINESTRING(30.4530724 59.6849262,30.4530868 59.6849239,30.4531127 59.6848333,30.4531034 59.6848301,30.4529683 59.6848711,30.4530724 59.6849262)', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992687,8904992686,8904992685,8904992684,8904992683,8904992687}'), + ('SRID=4326;LINESTRING(30.4530589 59.6849341,30.4530633 59.6849302,30.452961 59.6848772,30.4529482 59.6849246,30.4530589 59.6849341)', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992691,8904992690,8904992689,8904992688,8904992691}'), + ('SRID=4326;LINESTRING(30.4531212 59.684939,30.4533222 59.6849516,30.4533269 59.6849477,30.4532581 59.6849071,30.4532455 59.6849087,30.4532339 59.6849085,30.4532243 59.684907,30.4532133 59.6849034,30.4531185 59.6849335,30.4531212 59.684939)', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8904992699,8904992698,8904992697,8904992696,8904992692,8904992638,8904992695,8904992694,8904992693,8904992699}'), + ('SRID=4326;LINESTRING(30.453536 59.6848401,30.4529797 59.6847958,30.452977 59.6848046,30.4535329 59.6848493,30.453536 59.6848401)', 'way', 962714214, '{"landuse": "flowerbed"}', '{8905335420,8905335419,8905335418,8905335417,8905335420}'), + ('SRID=4326;LINESTRING(30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335435,8905335434,8905335433,8905335432,8905335435}'), + ('SRID=4326;LINESTRING(30.4533819 59.6849565,30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565)', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335439,8905335438,8905335437,8905335436,8905335439}'), + ('SRID=4326;LINESTRING(30.4533623 59.6849431,30.4533739 59.6849464,30.4534994 59.6849065,30.4534038 59.6848537,30.4533921 59.6848545,30.4533623 59.6849431)', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335444,8905335443,8905335442,8905335441,8905335440,8905335444}'), + ('SRID=4326;LINESTRING(30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335454,8905335453,8905335452,8905335451,8905335450,8905335449,8905335448,8905335447,8905335446,8905335454}'), + ('SRID=4326;LINESTRING(30.4529663 59.6848632,30.4530962 59.6848253,30.4530928 59.6848201,30.4529831 59.6848107,30.4529663 59.6848632)', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335458,8905335457,8905335456,8905335455,8905335458}'), + ('SRID=4326;LINESTRING(30.4532195 59.6848732,30.4532263 59.6848712,30.4532379 59.6848698,30.4532504 59.6848704,30.4532619 59.6848729,30.4532706 59.684876,30.4533642 59.6848467,30.4533614 59.6848416,30.453158 59.6848262,30.4531503 59.6848308,30.4532195 59.6848732)', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8905335467,8905335466,8905335465,8905335464,8905335463,8905335462,8905335461,8905335445,8905335460,8905335459,8905335467}'), + ('SRID=4326;LINESTRING(30.4532684 59.6848807,30.4533888 59.6848413)', 'way', 962714221, '{"highway": "footway", "surface": "fine_gravel"}', '{8904992654,1665582235}'), + ('SRID=4326;LINESTRING(30.4531238 59.6848204,30.4532177 59.684877)', 'way', 962714222, '{"highway": "footway", "surface": "fine_gravel"}', '{1665582234,8904992660}'), + ('SRID=4326;LINESTRING(30.4527677 59.6846399,30.4528579 59.6846477)', 'way', 962735606, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8905543613,1198356896}'), + ('SRID=4326;LINESTRING(30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399)', 'way', 962735608, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8566824026,1198356935,8566824027,8905543613}'), + ('SRID=4326;LINESTRING(30.4534851 59.684767,30.4534913 59.6847521,30.4534976 59.6847368)', 'way', 962735609, '{"highway": "steps"}', '{8905543614,12023732271,7927774425}'), + ('SRID=4326;LINESTRING(30.4529562 59.6847243,30.4529615 59.6847082,30.4529628 59.6847041)', 'way', 962735610, '{"highway": "steps"}', '{8905543615,12023732270,3968068678}'), + ('SRID=4326;LINESTRING(30.4526304 59.6847065,30.4525958 59.6847532)', 'way', 962735611, '{"highway": "footway", "surface": "fine_gravel"}', '{8905543616,8114975051}'), + ('SRID=4326;LINESTRING(30.4528676 59.6847547,30.4526341 59.6847357,30.452631 59.6847454,30.4528645 59.6847644,30.4528676 59.6847547)', 'way', 962735612, '{"landuse": "grass"}', '{8905558220,8905558219,8905558218,8905558217,8905558220}'), + ('SRID=4326;LINESTRING(30.4535589 59.6848104,30.4530176 59.6847681,30.4530149 59.6847769,30.4535559 59.6848195,30.4535589 59.6848104)', 'way', 962735613, '{"landuse": "grass"}', '{8905558224,8905558223,8905558222,8905558221,8905558224}'), + ('SRID=4326;LINESTRING(30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573,30.4530182 59.6847465)', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', '{8905558227,8905558226,8906857476,8906857475,8905558227}'), + ('SRID=4326;LINESTRING(30.4523152 59.6851448,30.4526116 59.6847664)', 'way', 962869359, '{"genus": "Prunus", "taxon": "Prunus virginiana", "height": "1.7", "barrier": "hedge", "genus:ru": "Черёмуха", "taxon:ru": "Черёмуха виргинская", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857452,8906857451}'), + ('SRID=4326;LINESTRING(30.4526277 59.6846803,30.4526365 59.6846782,30.4526406 59.6846738,30.4526381 59.684669,30.4526302 59.6846662,30.4526205 59.6846666,30.4526137 59.6846701,30.4526128 59.684675,30.4526184 59.684679,30.4526277 59.6846803)', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', '{8906857461,8906857453,8906857460,8906857459,8906857458,8906857457,8906857456,8906857455,8906857454,8906857461}'), + ('SRID=4326;LINESTRING(30.4535863 59.6847456,30.4535811 59.6847595)', 'way', 962869365, '{"height": "2", "barrier": "fence", "ref:okn": "781610399040356", "historic": "yes", "man_made": "embankment"}', '{8906857470,8289295976}'), + ('SRID=4326;MULTIPOLYGON(((30.4513 59.6845239,30.4513105 59.6845148,30.4513253 59.6844972,30.4513336 59.6844848,30.4513473 59.6844699,30.4513568 59.6844555,30.4513653 59.6844381,30.4513738 59.6844262,30.4513936 59.6844093,30.4514013 59.6843976,30.4514225 59.6843888,30.4514444 59.6843812,30.4514614 59.6843629,30.4514704 59.6843445,30.4514736 59.6843262,30.4514828 59.6842988,30.4514912 59.6842865,30.4514975 59.6842799,30.4515117 59.6842705,30.4515428 59.6842625,30.4516031 59.6842549,30.4518408 59.6843394,30.4519523 59.6843794,30.4520216 59.6844035,30.4520874 59.6844268,30.4521402 59.684444,30.4521943 59.6844606,30.452244 59.6844736,30.4522939 59.6844865,30.4523452 59.6844991,30.4524113 59.6845149,30.4524654 59.6845284,30.4525244 59.6845406,30.4525539 59.6845467,30.452566 59.6845558,30.452571 59.6845656,30.4525675 59.6845745,30.4525615 59.68459,30.4525618 59.6845988,30.4525613 59.6846073,30.4525568 59.6846156,30.4525466 59.6846232,30.4525331 59.6846279,30.4525251 59.684634,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4521768 59.6852884,30.4521573 59.685297,30.4521207 59.6853099,30.4520859 59.6853167,30.4520483 59.6853214,30.4520121 59.6853235,30.4519679 59.6853228,30.4519209 59.685316,30.4518731 59.6853033,30.4518364 59.6852869,30.4518016 59.6852646,30.4517747 59.6852436,30.4517546 59.685224,30.4517399 59.685205,30.4517278 59.6851773,30.4517104 59.6851603,30.4516916 59.6851468,30.4516857 59.6851285,30.4516903 59.6851123,30.4517117 59.6851023,30.4517426 59.685094,30.4517784 59.6850892,30.4518103 59.6850908,30.4518403 59.6851005,30.4518731 59.6850949,30.4518771 59.6850809,30.4518692 59.685051,30.4518777 59.6850294,30.4519043 59.6850131,30.4519376 59.6850028,30.4519737 59.684999,30.4520079 59.6849997,30.4520477 59.685012,30.4520887 59.6850223,30.4521435 59.6850216,30.4521948 59.6850093,30.4522112 59.6849969,30.4522301 59.6849727,30.45222 59.6849586,30.4521979 59.6849496,30.4521524 59.6849328,30.452119 59.6849135,30.452105 59.6848849,30.4521099 59.684868,30.4520932 59.684849,30.4520658 59.6848372,30.4520255 59.6848223,30.4520099 59.6848104,30.4519866 59.6847939,30.4519651 59.6847718,30.4519517 59.6847501,30.4519518 59.6847258,30.4519545 59.6847041,30.4519786 59.6846635,30.4520121 59.6846479,30.452051 59.6846256,30.4520604 59.6846161,30.4520537 59.6846046,30.4520175 59.6845829,30.4519692 59.6845613,30.451933 59.684566,30.4519102 59.6845748,30.4518928 59.6845917,30.4518772 59.6846127,30.4518697 59.684638,30.4518561 59.6846587,30.4518347 59.6846794,30.4518136 59.6846859,30.451785 59.6846963,30.4517612 59.6847117,30.4517363 59.6847257,30.4517004 59.6847328,30.4516678 59.6847376,30.4516243 59.6847395,30.4515783 59.6847426,30.4515624 59.6847383,30.451536 59.6847319,30.4515265 59.6847207,30.4515128 59.6847092,30.4515012 59.6846991,30.4514963 59.6846932,30.4515039 59.6846846,30.4515091 59.6846707,30.4515006 59.6846638,30.4514837 59.6846584,30.4514488 59.6846536,30.4514298 59.6846424,30.4514235 59.6846339,30.451434 59.6846216,30.451452 59.6846104,30.4514721 59.684604,30.4514816 59.6845934,30.4514827 59.6845827,30.4514763 59.6845715,30.4514427 59.6845604,30.4514004 59.6845719,30.4513792 59.6845708,30.451356 59.684566,30.4513317 59.6845601,30.4513137 59.6845489,30.4513042 59.6845393,30.4513 59.6845239)))', 'relation', 12444790, '{"natural": "wood", "leaf_type": "mixed", "leaf_cycle": "mixed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523568 59.6851898,30.4523702 59.6851856,30.4524483 59.6851915,30.452456 59.6851977,30.4524419 59.6852441,30.4524248 59.6852328,30.4524088 59.6852218,30.4523826 59.6852055,30.4523568 59.6851898)))', 'way', 961717571, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524524 59.6852459,30.4524673 59.6851987,30.4524824 59.6851946,30.4525509 59.6852001,30.4525595 59.685207,30.4525499 59.6852458,30.4525356 59.685252,30.4524524 59.6852459)))', 'way', 961717572, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523303 59.6851757,30.452333 59.6851663,30.4527521 59.6851991,30.4527487 59.6852082,30.4523303 59.6851757)))', 'way', 961717577, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528543 59.6852169,30.452857 59.6852074,30.4532097 59.6852351,30.4532064 59.6852443,30.4528543 59.6852169)))', 'way', 961717578, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531109 59.6852622,30.4531259 59.6852456,30.4532017 59.6852514,30.4531538 59.6852696,30.4531388 59.6852648,30.4531262 59.6852629,30.4531109 59.6852622)))', 'way', 961717579, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6852802,30.453028 59.6852429,30.4530414 59.6852392,30.4530554 59.6852658,30.453041 59.6852693,30.4530288 59.6852733,30.4530143 59.6852802)))', 'way', 961717580, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530501 59.6852392,30.4531172 59.6852446,30.4531031 59.6852618,30.4530921 59.6852616,30.4530782 59.6852621,30.4530632 59.6852641,30.4530501 59.6852392)))', 'way', 961717581, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.4531138 59.6852988,30.4530897 59.6853096,30.4530682 59.6853211,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168)))', 'relation', 12935642, '{"height": "6", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530106 59.6853114,30.4530161 59.6853019,30.4530244 59.6852922,30.4530375 59.685285,30.4530534 59.685278,30.4530732 59.685274,30.4530931 59.6852723,30.4531124 59.685272,30.4531329 59.6852751,30.4531443 59.685278,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530111 59.6853217,30.4530106 59.6853114)))', 'relation', 12922491, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530012 59.685359,30.4529724 59.685378,30.4529542 59.6853912,30.4529312 59.685409,30.4529136 59.685403)))', 'relation', 12935641, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527618 59.6854305,30.4527687 59.6854078,30.4527852 59.6854026,30.4528654 59.6854091,30.4528755 59.6854172,30.4528681 59.6854402,30.4528506 59.685445,30.4527747 59.6854387,30.4527618 59.6854305)))', 'way', 961717594, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524557 59.6852538,30.4525351 59.6852597,30.4525442 59.6852666,30.4525328 59.6853069,30.4525201 59.6853123,30.4524969 59.6852906,30.4524775 59.6852724,30.4524557 59.6852538)))', 'way', 961717595, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523226 59.6851969,30.4523418 59.6851889,30.4523598 59.6851989,30.4523808 59.6852109,30.4524103 59.6852297,30.4524317 59.6852443,30.4524536 59.68526,30.4524825 59.6852834,30.4524981 59.6852989,30.4525179 59.6853192,30.452532 59.6853359,30.4525456 59.6853529,30.4525561 59.6853703,30.4525656 59.6853881,30.4525739 59.6854062,30.4525791 59.6854198,30.4525811 59.6854262,30.452574 59.6854304,30.4525626 59.6854314,30.4525546 59.6854286,30.4525509 59.6854228,30.4525457 59.6854094,30.4525376 59.6853916,30.4525283 59.6853742,30.4525181 59.6853572,30.4525048 59.6853406,30.452491 59.6853243,30.4524715 59.6853042,30.4524562 59.6852892,30.452428 59.6852663,30.4524066 59.6852509,30.4523855 59.6852365,30.4523561 59.6852179,30.4523226 59.6851969)))', 'way', 961717596, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522795 59.6852157,30.4522803 59.6851945,30.4523081 59.6852118,30.4523362 59.6852293,30.4523649 59.6852475,30.4523853 59.6852614,30.4524056 59.685276,30.4524322 59.6852976,30.4524465 59.6853116,30.4524653 59.6853309,30.4524785 59.6853465,30.4524909 59.685362,30.4525002 59.6853776,30.4525091 59.6853943,30.4525171 59.6854097,30.4525231 59.6854242,30.4525257 59.6854303,30.4525224 59.6854348,30.4525097 59.6854362,30.452501 59.6854325,30.4524982 59.6854272,30.4524918 59.6854125,30.4524839 59.6853973,30.4524751 59.6853808,30.452466 59.6853657,30.452454 59.6853507,30.4524411 59.6853354,30.4524225 59.6853163,30.4524087 59.6853027,30.4523827 59.6852816,30.4523628 59.6852673,30.4523427 59.6852536,30.4523143 59.6852356,30.4522795 59.6852157)))', 'way', 961717597, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525975 59.6854176,30.4526042 59.6853942,30.4526196 59.6853891,30.4527003 59.6853955,30.4527112 59.6854034,30.4527032 59.6854269,30.4526842 59.6854313,30.4526076 59.685425,30.4525975 59.6854176)))', 'way', 961717598, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527849 59.685488,30.4527911 59.6854671,30.4528702 59.6854731,30.4528639 59.685494,30.4527849 59.685488)))', 'way', 961717599, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525642 59.6854713,30.4525705 59.6854504,30.4526495 59.6854564,30.4526433 59.6854773,30.4525642 59.6854713)))', 'way', 961717600, '{"genus": "Syrínga", "taxon": "Syringa meyeri", "natural": "scrub", "genus:ru": "Сирень", "taxon:ru": "Сирень Мейера", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529138 59.6853368,30.4529263 59.6852951,30.4529427 59.6852903,30.4529866 59.6852936,30.4529963 59.6853005,30.4529853 59.6853413,30.4529678 59.6853472,30.4529235 59.6853445,30.4529138 59.6853368)))', 'way', 961717602, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452933 59.6852753,30.4529444 59.6852374,30.4529582 59.685233,30.4530088 59.6852371,30.4530171 59.6852433,30.453002 59.6852821,30.4529886 59.6852873,30.4529441 59.6852838,30.452933 59.6852753)))', 'way', 961717603, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525595 59.6852465,30.4525709 59.685208,30.4525847 59.6852036,30.4526353 59.6852076,30.452645 59.6852146,30.4526333 59.6852538,30.4526207 59.6852585,30.4525692 59.6852544,30.4525595 59.6852465)))', 'way', 961717604, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452817 59.6852667,30.452831 59.6852267,30.4528493 59.6852281,30.452851 59.685224,30.4529216 59.6852291,30.4529319 59.6852358,30.45292 59.6852751,30.4529066 59.6852809,30.4528288 59.6852748,30.452817 59.6852667)))', 'way', 961717605, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527946 59.6853272,30.4528087 59.6852864,30.4528247 59.6852816,30.4529042 59.6852874,30.4529154 59.6852941,30.4529031 59.6853359,30.4528878 59.6853416,30.4528053 59.6853349,30.4527946 59.6853272)))', 'way', 961717606, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527745 59.6853889,30.4527899 59.6853454,30.4528052 59.6853419,30.4528845 59.6853477,30.4528953 59.6853552,30.4528839 59.6853982,30.4528677 59.6854032,30.4527865 59.6853969,30.4527745 59.6853889)))', 'way', 961717607, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533349 59.6850974,30.4533424 59.6850906,30.4534424 59.6850974,30.453427 59.6851532,30.4534116 59.6851536,30.4533349 59.6850974)))', 'way', 962062985, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534909 59.6851715,30.4535 59.6851418,30.4535229 59.6851437,30.4535137 59.6851734,30.4534909 59.6851715)))', 'relation', 12925809, '{"crop": "grape", "genus": "Vitis", "taxon": "Vitis amurensis", "landuse": "vineyard", "genus:ru": "Виноград", "taxon:ru": "Виноград амурский"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532761 59.6852013,30.4533083 59.6851038,30.4533211 59.6851024,30.4533941 59.6851559,30.453378 59.6851586,30.4533606 59.6851647,30.4533458 59.6851715,30.4533338 59.6851796,30.4533257 59.6851898,30.453319 59.6851999,30.4533137 59.6852128,30.4532761 59.6852013)))', 'way', 962062990, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530768 59.6850789,30.4530825 59.6850727,30.45327 59.6850856,30.4532721 59.6850914,30.4531813 59.685123,30.4531731 59.6851201,30.4531599 59.6851179,30.4531475 59.6851179,30.4531357 59.6851196,30.4530768 59.6850789)))', 'way', 962062993, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530252 59.6851728,30.4530493 59.6850863,30.4530634 59.6850845,30.4531219 59.6851249,30.4531169 59.6851285,30.4531133 59.6851328,30.4531117 59.6851378,30.4531125 59.6851429,30.4531159 59.685148,30.4530357 59.6851757,30.4530252 59.6851728)))', 'way', 962062994, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531381 59.685138,30.4531404 59.6851346,30.4531455 59.6851322,30.4531523 59.6851313,30.4531591 59.685132,30.4531645 59.6851343,30.4531672 59.6851376,30.4531665 59.6851411,30.4531627 59.6851441,30.4531566 59.6851458,30.4531496 59.6851459,30.4531433 59.6851444,30.4531391 59.6851415,30.4531381 59.685138)))', 'way', 962062995, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531836 59.6851532,30.45319 59.6851488,30.4531936 59.6851444,30.453195 59.6851401,30.4531946 59.6851353,30.4531914 59.68513,30.4532804 59.6850981,30.4532923 59.6851023,30.4532587 59.6851977,30.45325 59.6851972,30.4531836 59.6851532)))', 'way', 962062996, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530454 59.6851813,30.4531256 59.6851544,30.4531347 59.6851575,30.4531466 59.6851595,30.4531581 59.6851596,30.4531699 59.6851581,30.4532258 59.6851962,30.4532198 59.6852006,30.4530501 59.6851877,30.4530454 59.6851813)))', 'way', 962062997, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528382 59.6851861,30.4528402 59.6851794,30.452846 59.6851798,30.4528466 59.6851777,30.4532188 59.6852056,30.4532162 59.6852145,30.4528382 59.6851861)))', 'way', 962062998, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528577 59.6851769,30.4529093 59.6850046,30.4529281 59.685006,30.4529375 59.6849752,30.4529207 59.6849738,30.4529724 59.6848063,30.4535349 59.6848517,30.4534357 59.6851637,30.4534213 59.6851644,30.4534075 59.6851668,30.4533894 59.6851708,30.4533747 59.6851759,30.4533579 59.6851844,30.4533479 59.6851932,30.4533405 59.6852038,30.4533345 59.6852155,30.4533291 59.6852257,30.4532627 59.6852077,30.4528577 59.6851769)))', 'way', 962382760, '{"ref": "6", "name": "Ботанический сад", "leisure": "garden", "name:en": "The Botanical Garden", "wikidata": "Q118122045", "garden:type": "botanical"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533751 59.6849668,30.453381 59.6849616,30.4534833 59.6849698,30.4534679 59.6850219,30.4533751 59.6849668)))', 'way', 962382761, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529338 59.6849691,30.4529452 59.6849315,30.4530566 59.6849397,30.4530583 59.6849454,30.4529465 59.6849826,30.4529492 59.6849698,30.4529338 59.6849691)))', 'way', 962382762, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529465 59.6849918,30.4530662 59.6849507,30.4530757 59.684955,30.4530456 59.6850508,30.4530344 59.685052,30.4529465 59.6849918)))', 'way', 962382763, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529083 59.6850544,30.4529184 59.6850114,30.4529378 59.6850121,30.4529398 59.6850009,30.4530221 59.685056,30.4530153 59.6850613,30.4529083 59.6850544)))', 'way', 962382764, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528875 59.6851184,30.4529043 59.6850625,30.4530125 59.6850679,30.4530138 59.6850731,30.4528875 59.6851184)))', 'way', 962382765, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528698 59.6851739,30.4528812 59.685135,30.4529823 59.6851789,30.4529779 59.6851826,30.4528698 59.6851739)))', 'way', 962382766, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528885 59.6851275,30.4530206 59.6850798,30.4530311 59.6850841,30.4530072 59.6851719,30.4529896 59.6851748,30.4528885 59.6851275)))', 'way', 962382767, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533227 59.6850682,30.4533546 59.6849733,30.4533655 59.6849715,30.4534612 59.68503,30.4533332 59.6850719,30.4533227 59.6850682)))', 'way', 962382768, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533411 59.685078,30.4534619 59.6850382,30.4534444 59.6850899,30.4533437 59.685083,30.4533411 59.685078)))', 'way', 962382769, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532321 59.6850233,30.4532368 59.6850199,30.4532392 59.6850173,30.4533204 59.6850217,30.4533057 59.6850665,30.4532939 59.6850677,30.4532321 59.6850233)))', 'way', 962382770, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532374 59.6850005,30.4533289 59.6849694,30.4533388 59.6849721,30.4533251 59.6850146,30.4532419 59.6850113,30.4532411 59.6850057,30.4532374 59.6850005)))', 'way', 962382771, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532116 59.6849902,30.4532258 59.6849527,30.4533191 59.6849588,30.4533219 59.6849634,30.4532298 59.6849953,30.4532207 59.684992,30.4532116 59.6849902)))', 'way', 962382772, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453114 59.6849505,30.4531198 59.684945,30.4532124 59.6849517,30.4532004 59.6849896,30.4531904 59.6849904,30.45318 59.6849928,30.453114 59.6849505)))', 'way', 962382773, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530763 59.6850024,30.453091 59.6849565,30.4531032 59.6849548,30.4531695 59.6849976,30.4531647 59.6850018,30.4531619 59.6850065,30.4530763 59.6850024)))', 'way', 962382774, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530603 59.6850515,30.4530743 59.6850085,30.4531615 59.6850116,30.4531626 59.685015,30.4531656 59.685019,30.4530716 59.6850547,30.4530603 59.6850515)))', 'way', 962382775, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530791 59.6850599,30.4531749 59.6850252,30.4531799 59.6850271,30.4531863 59.6850287,30.4531735 59.6850722,30.453083 59.685065,30.4530791 59.6850599)))', 'way', 962382776, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531903 59.6850727,30.453201 59.6850303,30.453211 59.6850297,30.4532223 59.6850274,30.4532816 59.6850715,30.4532727 59.6850781,30.4531903 59.6850727)))', 'way', 962382777, '{"genus": "Rosa", "taxon": "Rosa spinosissima", "natural": "scrub", "genus:ru": "Роза", "taxon:ru": "Роза колючейшая", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "source:taxon": "board"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531253 59.6850083,30.4531279 59.6850008,30.4531334 59.6849938,30.4531415 59.6849874,30.4531519 59.6849819,30.4531642 59.6849776,30.4531779 59.6849745,30.4531926 59.6849729,30.4532076 59.6849728,30.4532224 59.6849741,30.4532363 59.6849768,30.453249 59.6849809,30.4532598 59.6849862,30.4532684 59.6849924,30.4532744 59.6849993,30.4532776 59.6850067,30.4532779 59.6850143,30.4532753 59.6850217,30.4532699 59.6850288,30.4532618 59.6850352,30.4532514 59.6850406,30.4532391 59.685045,30.4532253 59.685048,30.4532107 59.6850496,30.4531957 59.6850498,30.4531809 59.6850485,30.4531669 59.6850457,30.4531543 59.6850416,30.4531434 59.6850364,30.4531349 59.6850302,30.4531288 59.6850232,30.4531256 59.6850158,30.4531253 59.6850083)))', 'way', 962382781, '{"genus": "Tilia", "height": "6", "natural": "tree_row", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453207 59.6848903,30.4532078 59.6848854,30.4532114 59.6848808,30.4532177 59.684877,30.4532251 59.6848743,30.4532339 59.6848728,30.4532432 59.6848726,30.4532523 59.6848737,30.4532603 59.6848761,30.4532684 59.6848807,30.4532708 59.6848832,30.4532728 59.6848874,30.4532726 59.6848917,30.4532702 59.6848959,30.4532659 59.6848995,30.4532598 59.6849025,30.4532507 59.684905,30.4532406 59.6849059,30.4532304 59.6849052,30.4532212 59.6849029,30.453213 59.6848988,30.453209 59.6848951,30.453207 59.6848903)))', 'way', 962678725, '{"highway": "footway", "surface": "fine_gravel"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532247 59.6848893,30.453227 59.684886,30.4532321 59.6848835,30.4532389 59.6848826,30.4532457 59.6848833,30.4532511 59.6848856,30.4532538 59.6848889,30.4532531 59.6848924,30.4532493 59.6848954,30.4532432 59.6848971,30.4532362 59.6848972,30.4532299 59.6848957,30.4532257 59.6848928,30.4532247 59.6848893)))', 'way', 962678726, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530998 59.6849248,30.4531253 59.6848349,30.4531384 59.6848341,30.4532098 59.6848776,30.4532043 59.6848829,30.4532023 59.6848877,30.4532029 59.6848932,30.4532056 59.6848974,30.4531105 59.684928,30.4530998 59.6849248)))', 'way', 962678727, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529683 59.6848711,30.4531034 59.6848301,30.4531127 59.6848333,30.4530868 59.6849239,30.4530724 59.6849262,30.4529683 59.6848711)))', 'way', 962678728, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529482 59.6849246,30.452961 59.6848772,30.4530633 59.6849302,30.4530589 59.6849341,30.4529482 59.6849246)))', 'way', 962678729, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531185 59.6849335,30.4532133 59.6849034,30.4532243 59.684907,30.4532339 59.6849085,30.4532455 59.6849087,30.4532581 59.6849071,30.4533269 59.6849477,30.4533222 59.6849516,30.4531212 59.684939,30.4531185 59.6849335)))', 'way', 962678730, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452977 59.6848046,30.4529797 59.6847958,30.453536 59.6848401,30.4535329 59.6848493,30.452977 59.6848046)))', 'way', 962714214, '{"landuse": "flowerbed"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534135 59.68485,30.4534175 59.684847,30.4535189 59.6848554,30.4535068 59.684899,30.4534135 59.68485)))', 'way', 962714215, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533809 59.6849511,30.4535014 59.6849122,30.4534847 59.684964,30.4533819 59.6849565,30.4533809 59.6849511)))', 'way', 962714216, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533623 59.6849431,30.4533921 59.6848545,30.4534038 59.6848537,30.4534994 59.6849065,30.4533739 59.6849464,30.4533623 59.6849431)))', 'way', 962714217, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532695 59.6849025,30.4532754 59.6848982,30.4532786 59.6848938,30.4532796 59.6848892,30.4532772 59.6848818,30.4533702 59.6848509,30.4533788 59.6848538,30.4533512 59.6849423,30.4533368 59.6849437,30.4532695 59.6849025)))', 'way', 962714218, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529663 59.6848632,30.4529831 59.6848107,30.4530928 59.6848201,30.4530962 59.6848253,30.4529663 59.6848632)))', 'way', 962714219, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4531503 59.6848308,30.453158 59.6848262,30.4533614 59.6848416,30.4533642 59.6848467,30.4532706 59.684876,30.4532619 59.6848729,30.4532504 59.6848704,30.4532379 59.6848698,30.4532263 59.6848712,30.4532195 59.6848732,30.4531503 59.6848308)))', 'way', 962714220, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452631 59.6847454,30.4526341 59.6847357,30.4528676 59.6847547,30.4528645 59.6847644,30.452631 59.6847454)))', 'way', 962735612, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530149 59.6847769,30.4530176 59.6847681,30.4535589 59.6848104,30.4535559 59.6848195,30.4530149 59.6847769)))', 'way', 962735613, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530143 59.6847573,30.4530182 59.6847465,30.4535658 59.6847921,30.4535618 59.6848022,30.4530143 59.6847573)))', 'way', 962735614, '{"genus": "Cotoneaster", "taxon": "Cotoneaster lucidus", "height": "0.5", "barrier": "hedge", "landuse": "grass", "genus:ru": "Кизильник", "taxon:ru": "Кизильник блестящий", "leaf_type": "broadleaved", "leaf_cycle": "deciduous", "species:ru": "Кизильник блестящий", "species:wikidata": "Q162750"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523152 59.6851448,30.4526116 59.6847664,30.4528877 59.684789,30.4528309 59.6849691,30.4528148 59.6849678,30.4528061 59.6849952,30.4528221 59.6849965,30.45277 59.6851675,30.4527658 59.68518,30.4523152 59.6851448)))', 'relation', 12933782, '{"ref": "5", "name": "Кенконс", "genus": "Tilia", "name:en": "The Quincunx", "natural": "wood", "genus:ru": "Липа", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526128 59.684675,30.4526137 59.6846701,30.4526205 59.6846666,30.4526302 59.6846662,30.4526381 59.684669,30.4526406 59.6846738,30.4526365 59.6846782,30.4526277 59.6846803,30.4526184 59.684679,30.4526128 59.684675)))', 'way', 962869361, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526042 59.6846709,30.4526082 59.6846655,30.452617 59.6846635,30.4528469 59.6846817,30.452843 59.684694,30.4528376 59.6847122,30.4526498 59.6846973,30.4526123 59.6846817,30.4526042 59.6846709)))', 'relation', 12933783, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530629 59.6847308,30.4530706 59.6847131,30.4530752 59.684699,30.4535863 59.6847456,30.4535811 59.6847595,30.4535752 59.6847748,30.4530629 59.6847308)))', 'relation', 12933784, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4534977 59.6852035,30.4534967 59.6852111,30.453492 59.6852191,30.4534813 59.6852261,30.4534692 59.6852309,30.4534524 59.6852342,30.453435 59.6852355,30.4534193 59.6852337,30.4534045 59.6852307,30.4533914 59.6852248,30.4533831 59.6852182,30.4533763 59.68521,30.4533752 59.6852006)))', 'relation', 12935640, '{"height": "5.5", "roof:shape": "pyramidal", "roof:colour": "#DADDE2", "roof:height": "0.5", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4526773 59.6854805,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.4527511 59.6854859,30.4526773 59.6854805)))', 'relation', 12987950, '{"height": "1", "roof:shape": "skillion", "roof:colour": "grey", "roof:height": "1", "building:part": "yes", "roof:direction": "170", "building:colour": "#E4C78F", "roof:orientation": "along"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4526773 59.6854805,30.4527511 59.6854859,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528709 59.6855164,30.4527091 59.6855042,30.4525787 59.6854944)))', 'relation', 12935639, '{"height": "1", "roof:shape": "flat", "roof:colour": "grey", "building:part": "yes", "building:colour": "#E4C78F"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4524973 59.6846698,30.4526025 59.6847092,30.4522278 59.6851794,30.4522474 59.6851858,30.4522167 59.6853009,30.4522119 59.6853269,30.4521905 59.6853763,30.4521596 59.6854203,30.4521293 59.6854701,30.4520946 59.6855262,30.4520624 59.6855804,30.4520524 59.6856064,30.452047 59.6856386,30.452047 59.6856666,30.4520551 59.685713,30.4520778 59.685798,30.4520997 59.6858613,30.4521127 59.6859046,30.4521047 59.6859432,30.4520825 59.6859825,30.4520478 59.686026,30.4520492 59.6860479,30.4520658 59.6860755,30.4520819 59.6860924,30.4521387 59.6861383,30.4521581 59.6861556,30.4521822 59.6861782,30.45222 59.6862149,30.4522535 59.6862461,30.4522676 59.6862668,30.4522828 59.6862897,30.4522911 59.6863104,30.4522992 59.6863312,30.4523018 59.6863618,30.4522989 59.6863961,30.4522911 59.6864255,30.452286 59.6864496,30.4522787 59.6864747,30.4522743 59.6864925,30.452274 59.6865148,30.4522776 59.6865312,30.4522888 59.6865538,30.4523045 59.686573,30.4523226 59.6865862,30.4523413 59.6865954,30.4523836 59.686613,30.4524214 59.6866244,30.4524614 59.686634,30.4524912 59.6866392,30.4525264 59.6866438,30.4525641 59.6866457,30.4526585 59.6866455,30.4527524 59.6866414,30.4528825 59.6866353,30.4530173 59.6866255,30.4531259 59.6866181,30.4531936 59.6866133,30.453271 59.6866114,30.4533083 59.686614,30.4534028 59.6866228,30.4535229 59.6866363,30.4536201 59.6866455,30.453691 59.6866508,30.4536976 59.6866508,30.4539823 59.6866673,30.4539778 59.6866919,30.4544217 59.6867427,30.4544227 59.6867377,30.4544646 59.686742,30.4544638 59.6867472,30.4545508 59.6867576,30.4545534 59.6867525,30.4545963 59.6867573,30.4546214 59.6867604,30.4546788 59.6867553,30.4548168 59.686752,30.4551163 59.6867835,30.4552388 59.6868093,30.4553945 59.6868602,30.455491 59.6869022,30.4555769 59.68694,30.4556466 59.6869672,30.4557807 59.6870023,30.4558987 59.6870186,30.4559816 59.68702,30.4560875 59.6870601,30.4561508 59.6871091,30.4561831 59.6871675,30.456183 59.687235,30.4561616 59.6872894,30.4561159 59.6873352,30.4560824 59.6873697,30.4560436 59.6874139,30.4560113 59.687453,30.4559765 59.6875127,30.4559804 59.6875356,30.4559953 59.6875601,30.4560395 59.6875816,30.4560838 59.6875938,30.4561467 59.6876019,30.4561991 59.6876021,30.4563573 59.6875979,30.4565289 59.6875961,30.4566782 59.6875933,30.4567611 59.687592,30.4568899 59.687586,30.4570005 59.6875828,30.4570995 59.6875755,30.4572099 59.6875697,30.4573214 59.6875781,30.4574243 59.6875895,30.4575564 59.6876086,30.4576489 59.6876236,30.4577906 59.6876357,30.4578929 59.687656,30.4579737 59.6876911,30.4580413 59.6877282,30.4581225 59.6877678,30.4581817 59.6878027,30.4582341 59.6878291,30.4583152 59.6878863,30.4583478 59.6879193,30.4583877 59.6879673,30.458411 59.6880122,30.4584387 59.6880452,30.4584657 59.6880811,30.4585427 59.6881373,30.4585748 59.6881735,30.4586375 59.6882236,30.4586938 59.6882576,30.4587833 59.6883125,30.45884 59.6883434,30.4588959 59.6883741,30.4589723 59.6884163,30.4590175 59.6884495,30.4590717 59.6884887,30.4591366 59.6885238,30.4591908 59.6885653,30.4592104 59.6886013,30.4592312 59.6886474,30.4592494 59.6886943,30.4592859 59.6887303,30.4593172 59.688773,30.4593556 59.6888131,30.459429 59.6888677,30.459467 59.6889042,30.4594979 59.688929,30.4595172 59.6889694,30.4595266 59.6890044,30.4595285 59.689042,30.4595248 59.6890919,30.4595255 59.6891719,30.4595317 59.6892178,30.4595442 59.6893129,30.4595387 59.689363,30.4595118 59.6894235,30.4594761 59.689469,30.4594014 59.6895068,30.4593069 59.6895588,30.4592476 59.6895966,30.4591945 59.6896312,30.4591511 59.6896562,30.4591092 59.6896944,30.4590843 59.6897378,30.4590826 59.689771,30.4590853 59.6898069,30.4591078 59.6898435,30.4592007 59.6898882,30.4592339 59.6899293,30.4592628 59.6899874,30.4592762 59.6900429,30.45928 59.6901025,30.4592809 59.6901575,30.4592798 59.6902243,30.4593042 59.6902777,30.4593662 59.6903178,30.4594544 59.6903409,30.4595249 59.6903674,30.4595807 59.6903944,30.4596268 59.6904316,30.4596583 59.6904756,30.4596087 59.690551,30.4596006 59.6905905,30.4595977 59.6906403,30.4595904 59.6906903,30.4595826 59.6907418,30.4595821 59.6908019,30.459583 59.6908375,30.459529 59.6908703,30.4594074 59.6909353,30.4592831 59.6909939,30.459213 59.6910431,30.4591817 59.691066,30.4591361 59.6911201,30.4591012 59.6911675,30.4591012 59.691223,30.4591406 59.6912486,30.4592295 59.6912875,30.4592895 59.6913173,30.4593728 59.6913444,30.4594455 59.6913593,30.459517 59.6913682,30.4596037 59.6913935,30.4596491 59.6914211,30.4596908 59.6914522,30.4597319 59.6914924,30.4597559 59.6915361,30.4597745 59.6915821,30.459787 59.6916313,30.4597852 59.6916643,30.4597718 59.6917238,30.4597396 59.6917861,30.4596859 59.6918429,30.4596685 59.6918693,30.4596383 59.6919054,30.4596009 59.6919405,30.4595315 59.6919991,30.4594652 59.6920502,30.4594082 59.6920946,30.4593773 59.6921151,30.4593545 59.6921348,30.4593366 59.6921529,30.4593399 59.6921734,30.4593659 59.6921939,30.4596045 59.6923272,30.4596496 59.6923362,30.4596901 59.6923377,30.4597398 59.6923315,30.4597933 59.6923156,30.4598526 59.6922792,30.4599141 59.692234,30.4600168 59.6921771,30.4600862 59.6921317,30.4601606 59.6921103,30.4602526 59.6920827,30.460323 59.6920633,30.4603814 59.6920333,30.4604812 59.6919715,30.4605362 59.6919506,30.4606073 59.6919499,30.4606743 59.6919675,30.4607467 59.6920081,30.4608017 59.6920284,30.4608728 59.6920473,30.4609935 59.6920595,30.4610726 59.692067,30.4611517 59.6920866,30.4612403 59.6921299,30.4612939 59.6921759,30.4613569 59.6922104,30.4614227 59.6922341,30.4614964 59.6922659,30.4615568 59.6923059,30.4616211 59.6923729,30.4616748 59.6924466,30.4617579 59.6925197,30.4618368 59.6925614,30.461948 59.6926074,30.4620442 59.6926525,30.4621643 59.6927115,30.4622732 59.6927583,30.4623906 59.6927971,30.4625398 59.6928238,30.4626554 59.6928355,30.4627278 59.6928346,30.4627807 59.6928331,30.4629009 59.6928193,30.4629797 59.6928093,30.4630314 59.6928086,30.4630815 59.6928162,30.4631241 59.6928309,30.4631433 59.692849,30.4631354 59.6928782,30.4630918 59.6929178,30.4629933 59.692982,30.4628509 59.6930395,30.4627989 59.693076,30.4627775 59.6931068,30.4627715 59.6931374,30.4627782 59.6931678,30.4628 59.6931938,30.462816 59.6932161,30.4628201 59.6932352,30.4628276 59.6932642,30.4628055 59.6932947,30.462749 59.6933555,30.4627356 59.6934076,30.4627544 59.6934638,30.4627866 59.6935491,30.4628348 59.6936025,30.4628814 59.6936516,30.4629464 59.6936976,30.4630181 59.6937555,30.4631033 59.6938351,30.463194 59.693908,30.4632997 59.6939707,30.4633997 59.6940315,30.4634563 59.6940722,30.4634978 59.6941112,30.4635448 59.6941433,30.4635995 59.6941633,30.4636618 59.6941785,30.4637065 59.6941778,30.4637604 59.694169,30.4638165 59.6941725,30.4638941 59.6941882,30.463945 59.6941973,30.4639826 59.6942136,30.4640155 59.6942304,30.4640341 59.6942422,30.4640539 59.694259,30.4640781 59.6942943,30.4641097 59.6943536,30.4641054 59.6943849,30.4640955 59.6944214,30.4640677 59.6944543,30.4640278 59.694509,30.4639684 59.6945921,30.4639761 59.694632,30.4640196 59.6946691,30.4640928 59.6947215,30.4641504 59.6947644,30.4642414 59.694848,30.4643013 59.6949614,30.4643265 59.6950347,30.4643629 59.6950927,30.464383 59.6951471,30.4644155 59.6951914,30.4644503 59.6952616,30.464467 59.6953187,30.4644779 59.6953885,30.4644493 59.6954307,30.4644137 59.6954645,30.4643477 59.6955048,30.4642827 59.6955528,30.4641331 59.6956106,30.4640324 59.6956546,30.4639589 59.6956973,30.4639054 59.6957548,30.4638826 59.6958068,30.4638917 59.6958626,30.4638959 59.695908,30.4638913 59.6959452,30.4638761 59.6959807,30.4638581 59.6960266,30.4638387 59.6960774,30.4638353 59.6961315,30.4638514 59.6962235,30.4639031 59.6963079,30.4639806 59.6963837,30.4640641 59.696435,30.4641563 59.6964993,30.4642492 59.6965314,30.464353 59.6965624,30.4645112 59.6966079,30.4646909 59.6966431,30.4648519 59.6966796,30.4649082 59.6966992,30.4649645 59.6967256,30.4650316 59.6967635,30.465104 59.6968014,30.4651737 59.6968352,30.4652724 59.696889,30.4653398 59.6969338,30.4653714 59.6969637,30.4653977 59.6970024,30.4654124 59.6970396,30.4654285 59.6970924,30.4654299 59.6971357,30.4654285 59.6971912,30.4654178 59.6972534,30.4654178 59.6973103,30.4654268 59.6973472,30.465443 59.6973849,30.4654739 59.6974306,30.465535 59.6974889,30.4655776 59.6975263,30.4655998 59.6975497,30.4656249 59.6975948,30.4656281 59.6976305,30.4656291 59.6976586,30.465636 59.697698,30.4656478 59.6977439,30.4656559 59.6977839,30.4656639 59.6978247,30.4656741 59.697865,30.4656808 59.6978977,30.4656931 59.6979479,30.4657242 59.6979888,30.4657651 59.6980369,30.4658049 59.6980618,30.4658569 59.6980859,30.4659085 59.6981101,30.4659691 59.6981356,30.4659934 59.6981619,30.4660187 59.6982125,30.4660434 59.6982506,30.4660765 59.6982913,30.46612 59.6983229,30.46618 59.6983645,30.4662324 59.6983954,30.466279 59.6984245,30.4663222 59.6984585,30.4663422 59.6984839,30.4663508 59.6985161,30.466347 59.6985389,30.4663297 59.6985658,30.4662984 59.6986043,30.4662667 59.6986353,30.4662287 59.6986639,30.4662098 59.6986996,30.4662023 59.698738,30.4662177 59.6987814,30.4662476 59.6988217,30.4662941 59.6988595,30.4663218 59.6988897,30.4663703 59.6989336,30.4664066 59.698983,30.4664342 59.6990318,30.46626 59.699006,30.4662245 59.6990009,30.4661986 59.6989985,30.465736 59.6989731,30.465674 59.6989864,30.4656438 59.6989955,30.4656194 59.6990058,30.4655995 59.6990178,30.4655881 59.6990296,30.4655669 59.6990522,30.4655425 59.6990838,30.4655077 59.6991223,30.4654429 59.6991855,30.4653481 59.6992218,30.4652461 59.6992516,30.4651852 59.6992621,30.4651339 59.6992648,30.4650235 59.6992651,30.4649339 59.6992741,30.4648662 59.6992863,30.4647744 59.6993078,30.4647108 59.6993347,30.4646409 59.6993755,30.4645943 59.6994397,30.4645313 59.6994729,30.464447 59.6994976,30.4643342 59.6995189,30.4641272 59.6995513,30.4601 59.6956121,30.4590933 59.6945995,30.4585195 59.6940453,30.4565283 59.6920253,30.4559963 59.6915691,30.455779 59.6913562,30.4555191 59.6911016,30.4536132 59.6892318,30.4533114 59.6893232,30.4532486 59.6892981,30.453085 59.689221,30.4529871 59.689177,30.4528879 59.6891357,30.4528128 59.6891072,30.4524488 59.6889751,30.4524008 59.688958,30.4523038 59.6889045,30.4522723 59.6888961,30.4522552 59.6888858,30.4522361 59.6888724,30.452216 59.68885,30.4521838 59.6888324,30.4521207 59.6887986,30.4520511 59.6887644,30.4518909 59.6886967,30.4517882 59.6886551,30.4516822 59.6886098,30.4515358 59.6885556,30.4514019 59.6885123,30.4513037 59.6884778,30.4512571 59.6884636,30.4512056 59.6884428,30.4511404 59.6884196,30.4510778 59.6883871,30.4510264 59.6883553,30.4509783 59.6883239,30.4508749 59.6882578,30.4508266 59.688226,30.4507678 59.6881981,30.4505943 59.6881208,30.4501869 59.6879433,30.4499736 59.6878632,30.4499334 59.6878503,30.4498881 59.687841,30.4497871 59.6878092,30.4494924 59.6876814,30.4490926 59.6875099,30.4490362 59.6874936,30.4489854 59.6874759,30.4489383 59.6874638,30.448876 59.687449,30.4487626 59.6874338,30.4486346 59.6874221,30.4485214 59.6874142,30.4483648 59.6874032,30.4474691 59.687337,30.4468361 59.6872873,30.4467403 59.6872722,30.446684 59.6872669,30.4463496 59.6872017,30.4463085 59.6871943,30.4462561 59.6871833,30.4462179 59.6871721,30.446187 59.6871613,30.4461557 59.68715,30.4461253 59.6871366,30.4461066 59.6871274,30.4460918 59.6871135,30.4460273 59.6870454,30.4459552 59.6870078,30.4459436 59.6870073,30.4459073 59.6869902,30.4458766 59.6869748,30.445846 59.6869616,30.4458216 59.6869518,30.4457961 59.6869433,30.4457578 59.6869309,30.4457123 59.6869183,30.4456647 59.6869057,30.4455949 59.6868892,30.4455514 59.68688,30.4455232 59.6868726,30.4455129 59.6868665,30.4453868 59.6868434,30.44531 59.6868381,30.4452457 59.6868322,30.44506 59.686812,30.4450028 59.6868076,30.4449557 59.6868041,30.4449237 59.6868029,30.4448943 59.6868019,30.4448734 59.6868039,30.4448512 59.6868054,30.4448212 59.6868026,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017)))', 'relation', 4187886, '{"ref": "II", "name": "Долина реки Славянки", "place": "quarter", "name:az": "Slavyanka çayının vadisi", "name:fr": "Vallée de la rivière Slavianka", "name:hy": "Սլավյանկա գետի հովիտ", "name:uk": "Долина річки Слов''янки", "name:zh": "谷斯拉维亚卡河", "boundary": "protected_area", "int_name": "Vallée de la rivière Slavianka", "wikidata": "Q121809341", "wikipedia": "ru:Павловский парк#Долина реки Славянки", "description": "Район Павловского парка"}', NULL), + ('SRID=4326;LINESTRING(30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392)', 'way', 1297781094, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{8289295976,12023732271,12023732270,12023732269,8114975027,12023699867,12023732331,12023732330,12023732337,12023732336}'), + ('SRID=4326;LINESTRING(30.4528746 59.6855048,30.4528788 59.6854915)', 'way', 1093902027, '{"height": "8", "barrier": "fence", "fence_type": "bars", "min_height": "6.65"}', '{1439053674,1439053668}'), + ('SRID=4326;LINESTRING(30.4535894 59.6847601,30.4535811 59.6847595)', 'way', 1297781085, '{"height": "1.5", "barrier": "fence", "fence_type": "bars"}', '{12023732332,8289295976}'), + ('SRID=4326;LINESTRING(30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601)', 'way', 1297781086, '{"height": "2", "barrier": "fence", "fence_type": "metal"}', '{12023732335,12023732334,12023732333,12023732332}'), + ('SRID=4326;MULTIPOLYGON(((30.4519927 59.6856654,30.451993 59.6856352,30.4519974 59.6856085,30.4520057 59.6855861,30.452033 59.685533,30.4520717 59.6854725,30.4521073 59.6854196,30.4521538 59.6853554,30.4521646 59.6853419,30.4521729 59.6853289,30.4521751 59.685321,30.4521778 59.6853033,30.4521768 59.6852884,30.4522278 59.6851794,30.4522474 59.6851858,30.4522695 59.6851929,30.4522692 59.6852184,30.452307 59.6852409,30.4523333 59.6852571,30.4523534 59.6852701,30.4523836 59.685295,30.4524088 59.6853175,30.4524395 59.6853504,30.4524616 59.6853789,30.4524735 59.685401,30.4524845 59.6854195,30.4524943 59.6854502,30.452497 59.6854882,30.452346 59.6854768,30.4523217 59.6855588,30.4522802 59.6855556,30.4522258 59.6855515,30.4522191 59.6855742,30.4522002 59.685638,30.4521808 59.6857036,30.4521745 59.6857248,30.4522289 59.6857289,30.4522705 59.6857319,30.4522477 59.6858088,30.4522804 59.6858113,30.4525803 59.6858339,30.4526091 59.6858361,30.4526832 59.6858416,30.4528205 59.685852,30.4528174 59.6858982,30.4527279 59.6859036,30.4527314 59.6859191,30.4527383 59.6859422,30.4527472 59.6859643,30.4527643 59.6859927,30.4527791 59.6860133,30.4527956 59.6860336,30.4528174 59.6860572,30.4528406 59.6860793,30.4528659 59.6861008,30.4528879 59.6861175,30.4529175 59.6861373,30.4529497 59.6861561,30.4529804 59.6861727,30.4530167 59.6861897,30.4530418 59.6861992,30.4530963 59.6861616,30.4531534 59.686184,30.4531278 59.6862023,30.453137 59.6862056,30.4531608 59.6862141,30.4531704 59.6862175,30.453196 59.6861992,30.4531795 59.686249,30.4531642 59.6862975,30.453138 59.686381,30.4531363 59.6863866,30.4532826 59.6863983,30.4532725 59.6864305,30.4532916 59.686432,30.4532869 59.6864462,30.4532998 59.6864473,30.4533248 59.6864494,30.4533485 59.6864515,30.4533611 59.6864525,30.4533659 59.6864383,30.4534768 59.6864467,30.453575 59.6864544,30.4535812 59.6864636,30.4536188 59.68646,30.4536556 59.6864553,30.4536952 59.6864492,30.4537376 59.6864434,30.4537814 59.6864354,30.4538212 59.6864281,30.453863 59.6864194,30.4538817 59.6864353,30.4539287 59.6864214,30.4539454 59.6864356,30.4539576 59.686432,30.4540057 59.6864176,30.4540172 59.6864141,30.4540005 59.6863999,30.4540399 59.6863883,30.4540219 59.6863729,30.4540549 59.6863624,30.4540887 59.6863495,30.4541297 59.6863344,30.4541407 59.6863296,30.4541607 59.6863411,30.4541696 59.6863371,30.4542 59.6863235,30.4542091 59.6863195,30.4541887 59.6863078,30.4541965 59.6863041,30.4542363 59.6862844,30.4542705 59.6862654,30.4542999 59.6862773,30.4544137 59.6862059,30.4543849 59.6861942,30.4544059 59.686181,30.4544395 59.686154,30.4544728 59.6861239,30.4544964 59.6860973,30.4545494 59.6861117,30.4546053 59.6861282,30.4545922 59.6861427,30.4545784 59.6861572,30.4545449 59.6861862,30.4545138 59.6862131,30.4544576 59.6862495,30.4543906 59.6862854,30.4543294 59.6863147,30.4542746 59.6863415,30.454221 59.6863683,30.454115 59.6864133,30.454039 59.6864407,30.4539464 59.6864693,30.4539252 59.6864763,30.4538233 59.6865047,30.4536724 59.6865094,30.4536724 59.6865223,30.4536503 59.6865223,30.4535973 59.686521,30.4535465 59.6865208,30.4535021 59.6865209,30.4534712 59.6865222,30.4534473 59.6865255,30.453429 59.6865331,30.4534215 59.6865438,30.4534132 59.686574,30.4534136 59.6865866,30.453423 59.6865971,30.4534445 59.6866075,30.4534686 59.686613,30.4534579 59.6866461,30.4534073 59.6866421,30.4533332 59.6866345,30.4532837 59.6866305,30.453254 59.6866292,30.4532071 59.6866305,30.4531615 59.686632,30.4531191 59.6866347,30.4531041 59.6865988,30.4531448 59.6865925,30.4531695 59.6865869,30.4531966 59.6865772,30.4532138 59.6865676,30.4532231 59.6865589,30.453199 59.6865568,30.4531811 59.6865532,30.4531596 59.6865468,30.4531373 59.6865396,30.4531219 59.6865326,30.4530964 59.6865196,30.4530733 59.6865042,30.4530555 59.6864887,30.4530367 59.6864681,30.4530227 59.6864499,30.4530105 59.6864274,30.4530012 59.6864103,30.4529945 59.6863933,30.4529919 59.6863759,30.4529905 59.686347,30.4529907 59.6863231,30.4529911 59.6862911,30.4529891 59.686281,30.4529827 59.6862715,30.4529634 59.6862545,30.4529402 59.6862373,30.4529067 59.6862141,30.4528563 59.6861801,30.4528201 59.6861533,30.4527906 59.6861317,30.4527578 59.6861047,30.452731 59.6860823,30.4527092 59.6860609,30.4526947 59.6860457,30.4526816 59.6860278,30.4526652 59.6860011,30.4526541 59.6859782,30.4526337 59.6859283,30.4526256 59.6859159,30.4526103 59.685908,30.4525905 59.6859034,30.4525603 59.6859009,30.452391 59.6858965,30.4523675 59.6858999,30.4523504 59.685904,30.4523333 59.6859114,30.452312 59.685923,30.4522313 59.6859637,30.4521811 59.6859882,30.452085 59.686032,30.4520765 59.6860386,30.4520753 59.6860476,30.4520797 59.6860577,30.4520264 59.6860652,30.4520201 59.6860504,30.4520162 59.6860346,30.4520143 59.6860207,30.4520168 59.6860051,30.4520203 59.685989,30.4520274 59.6859769,30.4520341 59.6859612,30.4520405 59.6859506,30.452047 59.6859415,30.4520537 59.6859259,30.4520544 59.6859134,30.4520523 59.6858956,30.4520465 59.6858708,30.4520254 59.6858069,30.4519995 59.68571,30.4519927 59.6856654),(30.4521704 59.6857398,30.4521704 59.6857513,30.4521744 59.6857635,30.4521811 59.6857763,30.4521945 59.6857899,30.4522187 59.6858021,30.4522414 59.6858088,30.4522629 59.685735,30.4521731 59.6857289,30.4521704 59.6857398),(30.452226 59.6855475,30.4523159 59.6855543,30.4523387 59.6854798,30.4523212 59.6854826,30.4523011 59.6854866,30.452277 59.6854941,30.4522596 59.6855015,30.4522448 59.6855117,30.4522354 59.6855225,30.4522301 59.6855347,30.452226 59.6855475),(30.4522508 59.6858359,30.4525647 59.6858582,30.4525714 59.6858373,30.4522575 59.6858142,30.4522508 59.6858359),(30.4523249 59.685462,30.4523727 59.6854667,30.4523804 59.6854465,30.4523327 59.6854418,30.4523249 59.685462)))', 'relation', 6636677, '{"surface": "fine_gravel", "area:highway": "footway"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533763 59.68521,30.4534979 59.6851951,30.4535038 59.6852069,30.4534995 59.6852209,30.4533878 59.6852355,30.4533818 59.6852214,30.4533763 59.68521)))', 'relation', 12947389, '{"height": "6", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4523253 59.6851768,30.4523286 59.6851637,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4525881 59.6854311,30.452574 59.6853959,30.4525486 59.6853522,30.4525291 59.6853286,30.4525137 59.6853106,30.452501 59.6852981,30.4524755 59.6852751,30.452455 59.6852592,30.4524366 59.6852453,30.4524178 59.6852321,30.4523994 59.6852201,30.4523706 59.6852014,30.452339 59.6851839,30.4523253 59.6851768)))', 'relation', 5906400, '{"ref": "2", "name": "Цветочный партер", "leisure": "garden", "name:en": "The Flower Parterre", "ref:okn": "781620399040956", "alt_name": "Цветники Марии Фёдоровны", "wikidata": "Q118122045", "garden:type": "flowerbed", "garden:style": "french"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.4533268 59.6853074,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532343 59.6853363,30.453156 59.6852825)))', 'relation', 17755883, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4531158 59.6853933,30.4531719 59.6854212,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530216 59.6854636,30.4529242 59.6854401,30.4529045 59.6854337)))', 'relation', 17755885, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4532343 59.6853363,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.453238 59.6853862,30.453207 59.6854026,30.4531719 59.6854212,30.4531158 59.6853933,30.4530217 59.6853466)))', 'relation', 17755884, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4527677 59.6846399,30.4527719 59.6846286,30.4527799 59.6846212,30.4527933 59.6846157,30.4528134 59.6846137,30.4528403 59.6846144,30.4528537 59.6846178,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399)))', 'relation', 12932608, '{"natural": "scrub", "leaf_type": "broadleaved", "leaf_cycle": "deciduous"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 1721132, '{"ref": "3", "name": "Павильон Трёх граций", "note": "Геометрические теги крыши павильона размещены отдельно", "name:es": "Pabellón de las tres gracias", "name:fr": "Pavillon des Trois Grâces", "name:pt": "Pavilhão das Três Graças", "name:zh": "三美人亭", "ref:okn": "781610399040356", "tourism": "attraction", "building": "yes", "heritage": "2", "historic": "yes", "wikidata": "Q112716431", "addr:city": "Павловск", "architect": "Чарльз Камерон", "start_date": "1800", "addr:street": "Садовая улица", "architect:en": "Charles Cameron", "addr:housenumber": "20 литЧ", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6514/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12202573, '{"height": "7", "min_height": "5.5", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "1", "building:part": "yes", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452843 59.684694,30.4528469 59.6846817,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4530752 59.684699,30.4530706 59.6847131,30.4529628 59.6847041,30.452843 59.684694)))', 'relation', 12497925, '{"height": "1.5", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4525466 59.6846232,30.4525568 59.6846156,30.4525613 59.6846073,30.4525618 59.6845988,30.4525615 59.68459,30.4525675 59.6845745,30.452571 59.6845656,30.452566 59.6845558,30.4525539 59.6845467,30.4526659 59.6845694,30.4527826 59.6845897,30.4528946 59.6846069,30.4530012 59.6846212,30.4535732 59.6846878,30.4535916 59.6846905,30.453606 59.6846946,30.4536164 59.684701,30.4536208 59.6847085,30.4536214 59.684718,30.4536181 59.6847274,30.4536067 59.6847614,30.4535894 59.6847601,30.4535811 59.6847595,30.4535863 59.6847456,30.4535923 59.6847296,30.4535925 59.6847224,30.4535886 59.6847164,30.4535807 59.6847121,30.4535698 59.6847103,30.4535555 59.6847085,30.4530859 59.6846667,30.4530887 59.6846582,30.4530942 59.6846416,30.4528639 59.6846231,30.45286 59.6846392,30.4528579 59.6846477,30.4527677 59.6846399,30.4525841 59.6846239,30.4525626 59.6846222,30.4525466 59.6846232)))', 'relation', 12131779, '{"landuse": "grass"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.452047 59.6856386,30.4520524 59.6856064,30.4520624 59.6855804,30.4520946 59.6855262,30.4521293 59.6854701,30.4521596 59.6854203,30.4521905 59.6853763,30.4522119 59.6853269,30.4522167 59.6853009,30.4522474 59.6851858,30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4601554 59.6854805,30.4601767 59.6856005,30.4601793 59.6857568,30.4601468 59.6858374,30.4600081 59.6860973,30.459853 59.68614,30.459704 59.6863415,30.4596832 59.6864086,30.4596712 59.686482,30.4596638 59.6865545,30.459666 59.6866369,30.4596929 59.6867933,30.4597047 59.6868418,30.4597409 59.6869365,30.4598403 59.6871335,30.4599111 59.6872432,30.4599552 59.6873116,30.4600453 59.6874469,30.460134 59.687572,30.4600858 59.6875668,30.4600427 59.6875593,30.4599863 59.6875559,30.4598958 59.6875545,30.4597744 59.6875619,30.4597289 59.6875627,30.4596698 59.687583,30.4596323 59.6876026,30.4595974 59.6876371,30.4595625 59.6876658,30.4595236 59.6876852,30.459478 59.6876967,30.459407 59.6877062,30.4593453 59.6877028,30.4592849 59.6876838,30.4592367 59.6876553,30.4591509 59.6875883,30.4590905 59.6875599,30.4590355 59.6875424,30.4589524 59.6875261,30.4588343 59.6875105,30.4586868 59.6875038,30.4585474 59.6875038,30.4584333 59.6875086,30.4583274 59.6875126,30.4582348 59.6875193,30.4581437 59.6875301,30.4580095 59.6875505,30.4579371 59.6875654,30.4579009 59.6875782,30.4578312 59.6876019,30.4577386 59.6876249,30.4576489 59.6876236,30.4575564 59.6876086,30.4574243 59.6875895,30.4573214 59.6875781,30.4572099 59.6875697,30.4570995 59.6875755,30.4570005 59.6875828,30.4568899 59.687586,30.4567611 59.687592,30.4566782 59.6875933,30.4565289 59.6875961,30.4563573 59.6875979,30.4561991 59.6876021,30.4561467 59.6876019,30.4560838 59.6875938,30.4560395 59.6875816,30.4559953 59.6875601,30.4559804 59.6875356,30.4559765 59.6875127,30.4560113 59.687453,30.4560436 59.6874139,30.4560824 59.6873697,30.4561159 59.6873352,30.4561616 59.6872894,30.456183 59.687235,30.4561831 59.6871675,30.4561508 59.6871091,30.4560875 59.6870601,30.4559816 59.68702,30.4558987 59.6870186,30.4557807 59.6870023,30.4556466 59.6869672,30.4555769 59.68694,30.455491 59.6869022,30.4553945 59.6868602,30.4552388 59.6868093,30.4551163 59.6867835,30.4548168 59.686752,30.4546788 59.6867553,30.4546214 59.6867604,30.4545963 59.6867573,30.4545534 59.6867525,30.4545508 59.6867576,30.4544638 59.6867472,30.4544646 59.686742,30.4544227 59.6867377,30.4544217 59.6867427,30.4539778 59.6866919,30.4539823 59.6866673,30.4536976 59.6866508,30.453691 59.6866508,30.4536201 59.6866455,30.4535229 59.6866363,30.4534028 59.6866228,30.4533083 59.686614,30.453271 59.6866114,30.4531936 59.6866133,30.4531259 59.6866181,30.4530173 59.6866255,30.4528825 59.6866353,30.4527524 59.6866414,30.4526585 59.6866455,30.4525641 59.6866457,30.4525264 59.6866438,30.4524912 59.6866392,30.4524614 59.686634,30.4524214 59.6866244,30.4523836 59.686613,30.4523413 59.6865954,30.4523226 59.6865862,30.4523045 59.686573,30.4522888 59.6865538,30.4522776 59.6865312,30.452274 59.6865148,30.4522743 59.6864925,30.4522787 59.6864747,30.452286 59.6864496,30.4522911 59.6864255,30.4522989 59.6863961,30.4523018 59.6863618,30.4522992 59.6863312,30.4522911 59.6863104,30.4522828 59.6862897,30.4522676 59.6862668,30.4522535 59.6862461,30.45222 59.6862149,30.4521822 59.6861782,30.4521581 59.6861556,30.4521387 59.6861383,30.4520819 59.6860924,30.4520658 59.6860755,30.4520492 59.6860479,30.4520478 59.686026,30.4520825 59.6859825,30.4521047 59.6859432,30.4521127 59.6859046,30.4520997 59.6858613,30.4520778 59.685798,30.4520551 59.685713,30.452047 59.6856666,30.452047 59.6856386)))', 'relation', 4194432, '{"ref": "III", "name": "Придворцовый район", "place": "quarter", "name:fr": "Secteur central", "website": "https://pavlovskmuseum.ru/about/park/layout/36/", "boundary": "protected_area", "wikidata": "Q121809724", "wikipedia": "ru:Павловский парк#Центральный (Придворцовый) район", "description": "Район исторического Павловского парка"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4366882 59.6889898,30.4370373 59.6889668,30.4370736 59.6889644,30.4371138 59.6889367,30.4374634 59.6889115,30.4375002 59.6889088,30.4375427 59.6889059,30.4380171 59.6888738,30.438182 59.6888616,30.4383254 59.6888487,30.4384589 59.6888338,30.4385849 59.6888182,30.4388652 59.6887778,30.4389016 59.6887728,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346802 59.6935317,30.4346817 59.6935045,30.4346729 59.6934955,30.4346017 59.6934439,30.4344133 59.6933106,30.4344523 59.6932882,30.4344971 59.6932601,30.4345233 59.6932407,30.4345424 59.6932254,30.4345634 59.6932027,30.4345863 59.693171,30.4345979 59.6931498,30.4346066 59.6931248,30.4346128 59.6930889,30.434612 59.693054,30.4346077 59.6930245,30.4346019 59.6930124,30.4345969 59.693,30.4345757 59.6929702,30.4345621 59.6929518,30.434542 59.6929299,30.4345091 59.6928998,30.4344756 59.6928775,30.4344413 59.6928581,30.4343883 59.6928337,30.4343603 59.6928224,30.4343198 59.692809,30.4342705 59.6927958,30.4342429 59.6927909,30.4341796 59.6927811,30.4341217 59.6927737,30.4340777 59.6927708,30.4340075 59.6927673,30.4339293 59.6927692,30.4338474 59.6927768,30.433767 59.6927902,30.4337225 59.6928016,30.4335043 59.6926756,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)))', 'relation', 1721131, '{"name": "Павловский парк", "note": "https://wiki.openstreetmap.org/wiki/RU:Павловск/Павловский_парк", "leisure": "park", "name:be": "Паўлаўскі парк", "name:bg": "Павловски парк", "name:ca": "Parc Pàvlovsk", "name:en": "Pavlovsk Park", "name:es": "Parque Pávlovsk", "name:fr": "Parc de Pavlovsk", "name:he": "פארק פבלובסק", "name:hy": "Պավլովսկ պարկը", "name:nl": "Pavlovskpark", "name:ru": "Павловский парк", "name:zh": "巴甫洛夫斯克公园", "ref:okn": "781720399040986", "website": "https://pavlovskmuseum.ru/about/park/", "boundary": "protected_area", "heritage": "2", "historic": "yes", "int_name": "Parc de Pavlovsk", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q2506336", "wikipedia": "ru:Павловский парк", "fee:amount": "100", "start_date": "1777", "opening_hours": "07:00-19:00", "protect_class": "22", "operator:phone": "+7 (812) 452-15-36", "fee:conditional": "yes @ 9:00-17:00", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6407/", "operator:tourism": "museum", "operator:website": "http://www.pavlovskmuseum.ru", "protection_title": "Государственный музей-заповедник"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4324568 59.6916037,30.4324575 59.6915749,30.4324621 59.6915482,30.4324682 59.6915286,30.4324753 59.6915093,30.4324823 59.6914899,30.4324944 59.6914662,30.4325151 59.6914382,30.4329919 59.6909939,30.43335 59.690647,30.4334536 59.6905408,30.4339347 59.6900298,30.4339655 59.689999,30.4340158 59.6899496,30.4340708 59.6898981,30.4341325 59.6898423,30.4342103 59.6897817,30.4348634 59.6892971,30.4350304 59.6891847,30.4350941 59.6891512,30.4351437 59.6891282,30.4352121 59.6891005,30.4352859 59.6890795,30.4353489 59.6890653,30.4354555 59.6890493,30.4355219 59.6890436,30.4355801 59.6890388,30.4357297 59.689028,30.4358183 59.6890226,30.4358639 59.6890281,30.4359047 59.6890265,30.4359108 59.689045,30.4366128 59.6889954,30.4368674 59.6896812,30.4373083 59.6896203,30.4383622 59.6894747,30.4383925 59.6894699,30.4387768 59.6894091,30.4389533 59.6893793,30.4395631 59.6892765,30.4395975 59.6896826,30.43963 59.6897841,30.4411104 59.6895883,30.4411759 59.6892872,30.4412059 59.6891298,30.4412229 59.6890714,30.4402547 59.6891154,30.4398722 59.6891396,30.4395358 59.6891608,30.4394903 59.6891472,30.4392717 59.6889536,30.4391469 59.6889286,30.4391174 59.6889211,30.4390705 59.6889062,30.4390316 59.6888852,30.4390007 59.6888636,30.4389819 59.6888446,30.4389356 59.688768,30.4394909 59.6886943,30.4398543 59.6886325,30.4400071 59.6886046,30.4406955 59.688479,30.4408104 59.688458,30.4414068 59.6883491,30.4414241 59.6883739,30.4414406 59.6883714,30.4414646 59.6883674,30.4414905 59.688363,30.4417352 59.6883072,30.4417808 59.6882913,30.4418344 59.6882694,30.4418821 59.6882476,30.4419664 59.6882073,30.4431861 59.6875688,30.443383 59.6874657,30.4433566 59.6874537,30.4434022 59.6874298,30.4434203 59.6874209,30.4434378 59.6874131,30.4434606 59.6874073,30.4434998 59.6874019,30.4435553 59.6873939,30.4435961 59.6873824,30.4436284 59.6873671,30.4436444 59.6873558,30.4436589 59.687339,30.4436667 59.6873247,30.4436715 59.6873005,30.4436661 59.68728,30.4436564 59.6872675,30.4436464 59.687259,30.4438843 59.6871016,30.4441866 59.6869058,30.4442598 59.6869111,30.4442951 59.6869136,30.4443323 59.6869292,30.4443347 59.6869302,30.4443923 59.6869614,30.4444065 59.6869691,30.444438 59.6869552,30.4445489 59.6869077,30.444645 59.6868671,30.4446626 59.6868597,30.4446945 59.6868462,30.4446194 59.686801,30.4446175 59.6867999,30.4445818 59.68678,30.4445803 59.686779,30.4445518 59.6867606,30.4445169 59.686738,30.4444952 59.6867243,30.4444865 59.6867138,30.4444865 59.6867017,30.4444952 59.6866905,30.4445375 59.6866638,30.444687 59.6865741,30.4448347 59.6864855,30.445096 59.6863422,30.4452308 59.6862691,30.4453607 59.6861984,30.4456533 59.6860464,30.4458048 59.6859713,30.4459528 59.6859038,30.4463406 59.6857168,30.446723 59.6855342,30.447509 59.6851751,30.4477152 59.6850805,30.4478346 59.6850209,30.447946 59.6849604,30.4480438 59.684899,30.4481859 59.6848002,30.4483241 59.6846939,30.4484287 59.68461,30.4484662 59.6845826,30.4485046 59.6845589,30.4486084 59.6844949,30.4486791 59.6844562,30.4488525 59.6843737,30.4490602 59.6842836,30.449236 59.6842106,30.4493951 59.6841491,30.4494519 59.6841382,30.4495136 59.6841273,30.4496558 59.6841097,30.4498549 59.6840882,30.4498949 59.6840845,30.450264 59.6840506,30.4503834 59.6840449,30.4504672 59.684042,30.4505671 59.6840395,30.4506691 59.6840402,30.4507093 59.6840439,30.4507582 59.6840576,30.4508011 59.6840678,30.4508456 59.6840745,30.4510132 59.6840377,30.4511147 59.6840765,30.4511813 59.6841019,30.4512523 59.684129,30.4513511 59.6841667,30.4513385 59.6842533,30.4516531 59.6843525,30.4522364 59.6845601,30.4525041 59.6846527,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540811 59.684801,30.454116 59.6848031,30.4541545 59.6848057,30.4541808 59.6848075,30.4542309 59.6848107,30.4542641 59.6848127,30.4548047 59.6848466,30.4554062 59.6848883,30.4554276 59.6847972,30.4555787 59.6847942,30.4556183 59.6848013,30.45566 59.6848082,30.4556602 59.6848033,30.4557245 59.6848039,30.4557241 59.6848115,30.4558924 59.6848132,30.4558927 59.6848058,30.4559591 59.6848066,30.455968 59.6848067,30.456132 59.6848104,30.4563276 59.6848162,30.4565276 59.684828,30.4567174 59.6848433,30.4568173 59.684855,30.4569112 59.6848679,30.4569916 59.6848814,30.4570788 59.684897,30.4572191 59.6849255,30.4573068 59.6849471,30.4574034 59.6849722,30.4575415 59.6850067,30.4576796 59.6850473,30.4580243 59.6851495,30.458385 59.6852544,30.4585262 59.6852893,30.4586586 59.685316,30.4588062 59.6853451,30.4589376 59.6853682,30.4590725 59.6853866,30.4592621 59.685404,30.4596014 59.6854347,30.4597372 59.6854816,30.4597703 59.6854795,30.4598067 59.6854769,30.4598237 59.6854755,30.4598214 59.6854687,30.4598497 59.6854668,30.4598516 59.685473,30.4598851 59.6854707,30.4599237 59.6854678,30.4599217 59.6854614,30.4599499 59.6854595,30.4599522 59.6854659,30.4599714 59.6854643,30.4600087 59.6854612,30.4600147 59.6854607,30.4600534 59.6854572,30.4601985 59.6854128,30.4638062 59.6851903,30.4654915 59.6850838,30.4656498 59.6850784,30.4657732 59.6850771,30.4659129 59.6850764,30.4672032 59.6851174,30.4675083 59.6851283,30.4688128 59.6851701,30.4688678 59.6851408,30.4688852 59.6851413,30.4688871 59.6851311,30.4689262 59.6851323,30.4689682 59.6851335,30.468967 59.6851443,30.4689863 59.685145,30.4690455 59.6851751,30.4692529 59.685186,30.4712661 59.6852555,30.4717998 59.6852713,30.4721192 59.6852787,30.4728281 59.6852957,30.4729388 59.6852984,30.4730017 59.6852996,30.4730645 59.6853009,30.4731491 59.685303,30.4731729 59.6853036,30.4731946 59.6853042,30.4732094 59.6853046,30.473248 59.6853064,30.4732627 59.685307,30.4733131 59.6853083,30.4735532 59.6853155,30.4738186 59.6853234,30.4747194 59.6853502,30.4760058 59.6853884,30.4760711 59.6853899,30.4767032 59.6854063,30.4769946 59.6854145,30.4770841 59.685417,30.4772286 59.6854211,30.477324 59.6854237,30.4775836 59.6854311,30.4776272 59.6854323,30.4777058 59.6854345,30.477722 59.6854131,30.4778064 59.6854131,30.4778267 59.6854376,30.4782629 59.6854511,30.4803314 59.6855148,30.4804972 59.6855157,30.4806957 59.6855035,30.4809866 59.6854778,30.4813563 59.6854413,30.4816887 59.6854084,30.4829592 59.6852829,30.484201 59.6851595,30.4851027 59.68507,30.4856157 59.685019,30.4859321 59.6849876,30.4860003 59.6849808,30.4860486 59.6850662,30.4861646 59.6852711,30.4863078 59.6855173,30.4864369 59.6857523,30.4864761 59.6858216,30.4866222 59.6860742,30.486646 59.6861155,30.4870343 59.686796,30.4871407 59.6869901,30.4872588 59.6872054,30.4877195 59.6880454,30.487808 59.688202,30.4878204 59.6882235,30.4878635 59.6883002,30.48787 59.6883117,30.4878916 59.6883487,30.4879075 59.6883812,30.4879153 59.6883977,30.4879246 59.6884174,30.4879765 59.6885128,30.4880116 59.6885763,30.4880581 59.6885694,30.4881086 59.6885618,30.4881355 59.6885578,30.4882292 59.6885456,30.4888791 59.6896373,30.489701 59.6924953,30.4896786 59.6925163,30.4908925 59.6968416,30.4908907 59.6969219,30.4908693 59.696978,30.4908278 59.6970308,30.488341 59.6991065,30.4878952 59.6994664,30.4876552 59.6996701,30.4838245 59.7028735,30.4794807 59.706361,30.479376 59.7064476,30.4793425 59.7064936,30.479321 59.7065348,30.4793143 59.7065707,30.479136 59.7066397,30.4791105 59.7067926,30.4790216 59.7067947,30.478967 59.7068115,30.4789214 59.706846,30.4788959 59.7068683,30.4788395 59.706903,30.4787806 59.7069259,30.4787363 59.7069386,30.4786216 59.7069479,30.4779183 59.7069596,30.4736783 59.7070303,30.473675 59.7069867,30.4736739 59.7069694,30.4736706 59.7069389,30.4732464 59.7069452,30.4729689 59.7069493,30.4697965 59.7069962,30.4687773 59.7070136,30.4663413 59.7070601,30.4662337 59.7070622,30.4660736 59.7070633,30.4660557 59.707042,30.4660408 59.7070243,30.4659974 59.7069726,30.4659835 59.7069561,30.4659791 59.7069508,30.4659686 59.7069384,30.4659531 59.70692,30.4658816 59.7068348,30.4656818 59.7065821,30.4655355 59.7065546,30.4652621 59.7065033,30.4651239 59.7064784,30.4650726 59.706474,30.4650016 59.7064692,30.4645828 59.706441,30.4644927 59.7064349,30.4640497 59.7064008,30.4639779 59.7064033,30.4639163 59.7064329,30.4638698 59.7064308,30.4638303 59.7064291,30.4637599 59.7064255,30.4637148 59.7064233,30.4636972 59.706296,30.463669 59.7061547,30.4636421 59.7061131,30.4636191 59.7060776,30.4635652 59.7060291,30.4635492 59.7060147,30.4633455 59.7058911,30.4631782 59.7058035,30.4630326 59.7057228,30.4628485 59.7056506,30.4625988 59.7055749,30.4623338 59.7055117,30.462411 59.7054206,30.4625908 59.7051744,30.4627383 59.705012,30.4627387 59.7049841,30.4628295 59.7048848,30.4629347 59.7048106,30.4631495 59.7046592,30.4632413 59.7045664,30.4632815 59.7037822,30.4635147 59.7033885,30.4635704 59.7031913,30.4635837 59.7031547,30.4637313 59.7028432,30.4638334 59.7024501,30.4638456 59.7023972,30.463836 59.7023848,30.4637361 59.7022574,30.4636905 59.7022019,30.4635064 59.7019706,30.4635161 59.7019493,30.4636111 59.701924,30.463635 59.7019182,30.4637511 59.70189,30.4637308 59.7018637,30.4637092 59.7018342,30.4636851 59.701795,30.4636516 59.7017429,30.4636207 59.7016942,30.4635699 59.7016225,30.4635353 59.7015738,30.4635222 59.7014983,30.4635136 59.701428,30.4635319 59.7013361,30.463663 59.7011745,30.4636393 59.7011294,30.4635985 59.701113,30.4635901 59.7011096,30.4634909 59.7010692,30.4633415 59.7009065,30.4632475 59.7008008,30.4633339 59.7007478,30.463267 59.7007226,30.4631688 59.7006856,30.462726 59.7005187,30.4627839 59.700477,30.4629277 59.700364,30.4628712 59.7003463,30.4628406 59.7003375,30.4628018 59.700329,30.4627324 59.7003133,30.4625437 59.700281,30.4624003 59.7002577,30.4623277 59.7002393,30.4622533 59.7002132,30.462183 59.7001817,30.4620452 59.7000972,30.4619642 59.7000527,30.4618883 59.7000085,30.4617881 59.6999591,30.4616936 59.6999188,30.4615834 59.6998886,30.4615415 59.6998816,30.4614913 59.6998733,30.4614085 59.6998641,30.4612464 59.6998574,30.4611217 59.6998541,30.4608263 59.6998478,30.4607558 59.6996967,30.4607155 59.6996206,30.46063 59.6994896,30.4606032 59.6994485,30.4605319 59.6993425,30.4604507 59.6993266,30.4602215 59.6992772,30.4595558 59.699131,30.4592776 59.699072,30.4575016 59.6986865,30.4562393 59.6984033,30.4559187 59.6983348,30.4558203 59.6983605,30.4557987 59.6983662,30.4557686 59.6983735,30.4549679 59.6985899,30.4541981 59.6988205,30.453899 59.6989058,30.4537918 59.6989356,30.4536794 59.6989629,30.4535557 59.6989856,30.4534511 59.6989991,30.4533251 59.6990121,30.4532188 59.6990257,30.4531097 59.6990384,30.4530898 59.6990411,30.4530456 59.6990471,30.4529483 59.6990428,30.452721 59.6990256,30.4526039 59.6990156,30.4523895 59.6989984,30.4522106 59.6989843,30.4520626 59.698971,30.4518814 59.6989585,30.4516574 59.6989473,30.4515079 59.6989512,30.4513576 59.6989647,30.4511257 59.6989833,30.4507033 59.6990189,30.4498045 59.699093,30.4495902 59.6991095,30.449288 59.6991349,30.4489705 59.699163,30.4487787 59.6991832,30.4486594 59.6992042,30.4485816 59.6992218,30.4483804 59.6992665,30.4483134 59.6992807,30.4482261 59.6992991,30.4480734 59.6993207,30.4478922 59.6993369,30.4476348 59.6993534,30.4474175 59.6993579,30.4472213 59.6993549,30.4470849 59.6993484,30.4469099 59.6993315,30.4465807 59.6992943,30.4463005 59.699266,30.4460455 59.6992334,30.445784 59.6991949,30.4455453 59.6991481,30.4453367 59.6991061,30.4450934 59.6990399,30.4448113 59.6989579,30.4445865 59.6988843,30.4443921 59.6988221,30.4441572 59.6987421,30.4439038 59.6986557,30.4434519 59.6984884,30.4429811 59.6983056,30.4420431 59.6979399,30.4418559 59.6978726,30.4416695 59.6977994,30.441534 59.6977474,30.4414482 59.6977149,30.4413649 59.6976776,30.4412699 59.6976303,30.4411831 59.6975862,30.4411089 59.6975484,30.4410289 59.697504,30.4409815 59.6974727,30.4409212 59.6974328,30.4408374 59.6973571,30.4405993 59.6971268,30.4404411 59.6969686,30.4402828 59.6968116,30.4397464 59.6962404,30.4395909 59.6960983,30.439434 59.6959641,30.4393118 59.695876,30.4392419 59.6958321,30.439177 59.6957928,30.4390738 59.6957339,30.4388879 59.6956351,30.4385161 59.6954393,30.4384468 59.695404,30.438361 59.6953709,30.4382459 59.6953424,30.4380981 59.695312,30.4379144 59.6952822,30.4375067 59.6952213,30.4372801 59.6951739,30.4371808 59.695153,30.4370661 59.695126,30.4369099 59.6950805,30.4367611 59.6950291,30.4366176 59.6949682,30.4364949 59.6948934,30.4362637 59.6947112,30.4359055 59.6944268,30.4355501 59.6941622,30.4351531 59.6938841,30.4347532 59.6936305,30.4346998 59.6935975,30.4346849 59.693577,30.4346174 59.6935301,30.4346147 59.6935224,30.4346086 59.6935129,30.4345932 59.6935014,30.4344744 59.6934215,30.4344752 59.6934118,30.4344684 59.6934032,30.4343048 59.693294,30.4335858 59.6928433,30.4335672 59.6928378,30.4335491 59.692831,30.4335344 59.6928246,30.4335169 59.6928158,30.4334908 59.6928019,30.4334747 59.6927935,30.4334378 59.6927735,30.4334063 59.6927569,30.4333486 59.6927221,30.4332896 59.6926848,30.4333366 59.6926751,30.4332748 59.6926368,30.4332052 59.6925918,30.4331186 59.6925354,30.4330442 59.6924832,30.4329739 59.6924321,30.432891 59.6923692,30.4328383 59.6923262,30.432786 59.6922862,30.4327464 59.6922518,30.4327224 59.6922281,30.4327002 59.692202,30.4326801 59.6921654,30.4326563 59.6921265,30.4326325 59.6920866,30.4326077 59.6920372,30.4325876 59.6920054,30.4325715 59.6919759,30.4325473 59.691936,30.4325252 59.6918893,30.4325105 59.6918548,30.4324944 59.6918145,30.4324776 59.6917472,30.4324681 59.6916959,30.4324608 59.6916494,30.4324568 59.6916037)),((30.4459925 59.6840515,30.4465029 59.6838166,30.4469327 59.6836721,30.4472874 59.6834226,30.4479163 59.6832392,30.4483415 59.6832476,30.4484247 59.6832514,30.4484595 59.6832547,30.4484884 59.6832585,30.4485108 59.6832641,30.4489705 59.6834352,30.4489993 59.6834563,30.4490069 59.6834636,30.4492468 59.6836887,30.4491255 59.6840718,30.4490543 59.6840686,30.4483928 59.684035,30.4478277 59.6840459,30.4469355 59.6841321,30.4462744 59.6842068,30.4459925 59.6840515)))', 'relation', 17990902, '{"name": "Государственный музей-заповедник «Павловск»", "note": "граница имущественного комплекса организации, не граница парка", "boundary": "protected_area", "operator": "Государственный музей-заповедник «Павловск»", "wikidata": "Q405637"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4524973 59.6846698,30.4525041 59.6846527,30.4525156 59.684624,30.4525454 59.684611,30.4525859 59.6846153,30.45286 59.6846392,30.4528639 59.6846231,30.4530942 59.6846416,30.4530887 59.6846582,30.4535793 59.6847014,30.4536048 59.6847154,30.4535894 59.6847601,30.4535811 59.6847595,30.4534913 59.6847521,30.4529615 59.6847082,30.4525675 59.6846756,30.4524973 59.6846698)))', 'relation', 17786995, '{"landuse": "construction", "start_date": "06.204", "description": "реставрация Павильона Трех граций"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522477 59.6858088,30.4522705 59.6857319,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4527091 59.6855042,30.4528709 59.6855164,30.4529043 59.6855189,30.4529835 59.685525,30.4530542 59.6855302,30.4530286 59.6856166,30.4529796 59.6857822,30.4529559 59.6858622,30.4528897 59.6858572,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088)))', 'relation', 6636658, '{"height": "19.650", "architect": "Чарльз Камерон", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2.45", "building:part": "yes", "building:colour": "#FFE19C", "source:building:part": "http://pancer.ru/images/project/012/2.jpg"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4530216 59.6854636,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.453064 59.6855044,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 6636659, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528709 59.6855164,30.4528746 59.6855048,30.4528788 59.6854915,30.4529122 59.6854936,30.4529942 59.6854993,30.4529881 59.6855114,30.4529835 59.685525,30.4529043 59.6855189,30.4528709 59.6855164)))', 'relation', 14572596, '{"height": "6.65", "roof:shape": "flat", "roof:colour": "gray", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4533818 59.6852214,30.453417 59.6852162,30.4534578 59.6852115,30.4535038 59.6852069,30.4535289 59.6853164,30.4535075 59.6853177,30.4534847 59.6853198,30.4534688 59.6853212,30.4534368 59.6853262,30.453436 59.6853248,30.4534146 59.6852887,30.4533878 59.6852355,30.4533818 59.6852214)))', 'relation', 17755881, '{"height": "13", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.453436 59.6853248,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533268 59.6853074,30.4532684 59.6852465)))', 'relation', 17755882, '{"height": "13", "min_height": "10", "roof:shape": "gabled", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529542 59.6853912,30.4529724 59.685378,30.4530012 59.685359,30.4530217 59.6853466,30.4530456 59.6853334,30.4530682 59.6853211,30.4530897 59.6853096,30.4531138 59.6852988,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533878 59.6852355,30.4534146 59.6852887,30.4533836 59.6852944,30.4533532 59.6853009,30.4533268 59.6853074,30.4532946 59.6853162,30.4532665 59.6853249,30.4532343 59.6853363,30.4532132 59.6853445,30.4531881 59.6853553,30.453164 59.6853668,30.4531411 59.6853788,30.4531158 59.6853933,30.4530954 59.6854062,30.4530746 59.6854199,30.4530552 59.6854344,30.4530382 59.6854491,30.4530216 59.6854636,30.4530079 59.6854761,30.4530004 59.6854886,30.4529942 59.6854993,30.4529122 59.6854936,30.4528788 59.6854915)))', 'relation', 17904735, '{"height": "10", "roof:shape": "flat", "building:part": "yes", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4522278 59.6851794,30.4526025 59.6847092,30.4524973 59.6846698,30.4525184 59.6846577,30.4525251 59.684634,30.4525331 59.6846279,30.4525466 59.6846232,30.4525626 59.6846222,30.4525841 59.6846239,30.4527677 59.6846399,30.4528579 59.6846477,30.4528469 59.6846817,30.452843 59.684694,30.4529628 59.6847041,30.4530706 59.6847131,30.4530752 59.684699,30.4530859 59.6846667,30.4535555 59.6847085,30.4535698 59.6847103,30.4535807 59.6847121,30.4535886 59.6847164,30.4535925 59.6847224,30.4535923 59.6847296,30.4535863 59.6847456,30.4535811 59.6847595,30.4535894 59.6847601,30.4536067 59.6847614,30.4536193 59.6847624,30.4536402 59.684764,30.4535302 59.6851198,30.4535229 59.6851437,30.4535137 59.6851734,30.4535124 59.6851786,30.4535038 59.6852069,30.4534979 59.6851951,30.4534914 59.6851874,30.4534811 59.6851808,30.4534678 59.6851758,30.4534524 59.6851728,30.453436 59.6851719,30.4534196 59.6851732,30.4534028 59.6851772,30.4533891 59.6851835,30.4533796 59.6851915,30.4533752 59.6852006,30.4533763 59.68521,30.4533818 59.6852214,30.4533524 59.685227,30.4533302 59.6852316,30.453297 59.6852393,30.4532684 59.6852465,30.4532391 59.6852543,30.4531809 59.6852727,30.453156 59.6852825,30.4531357 59.6852905,30.453128 59.6852882,30.4531198 59.6852866,30.4531113 59.6852855,30.4531024 59.685285,30.4530936 59.6852852,30.4530849 59.6852859,30.4530765 59.6852873,30.4530685 59.6852893,30.4530612 59.6852918,30.4530559 59.6852942,30.4530511 59.6852969,30.453047 59.6852998,30.4530436 59.6853029,30.4530408 59.6853062,30.4530389 59.6853097,30.4530377 59.6853132,30.4530373 59.6853168,30.4530377 59.6853204,30.4530387 59.6853245,30.4530402 59.6853274,30.4530424 59.6853304,30.4530456 59.6853334,30.4530217 59.6853466,30.4530053 59.6853403,30.4529809 59.6853554,30.4529707 59.6853538,30.4529621 59.6853543,30.452955 59.6853567,30.4529297 59.6853727,30.4529266 59.6853774,30.4529284 59.6853815,30.4529349 59.6853856,30.4529136 59.685403,30.4529312 59.685409,30.4529147 59.685423,30.4529045 59.6854337,30.4529242 59.6854401,30.452909 59.6854545,30.4528993 59.6854656,30.4528865 59.6854815,30.4528788 59.6854915,30.4528746 59.6855048,30.4527686 59.6854977,30.452777 59.6854654,30.4527565 59.685464,30.4527224 59.6854618,30.4526841 59.6854592,30.4526646 59.6854579,30.4526564 59.6854895,30.4525812 59.6854845,30.4525787 59.6854944,30.452497 59.6854882,30.4524943 59.6854502,30.4524845 59.6854195,30.4524735 59.685401,30.4524616 59.6853789,30.4524395 59.6853504,30.4524088 59.6853175,30.4523836 59.685295,30.4523534 59.6852701,30.4523333 59.6852571,30.452307 59.6852409,30.4522692 59.6852184,30.4522695 59.6851929,30.4522474 59.6851858,30.4522278 59.6851794)))', 'relation', 4274530, '{"fee": "yes", "ref": "IIIа", "name": "Собственный сад", "leisure": "garden", "name:fr": "Jardin privé", "ref:okn": "781620399040366", "tourism": "attraction", "alt_name": "Собственный садик", "boundary": "protected_area", "heritage": "2", "wikidata": "Q118122043", "start_date": "1803", "garden:style": "french", "opening_hours": "Mo-Su 09:00-21:00; May 08 - Aug 31", "heritage:website": "https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6518/"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4521745 59.6857248,30.4521808 59.6857036,30.4522002 59.685638,30.4522191 59.6855742,30.4522258 59.6855515,30.4522802 59.6855556,30.4523217 59.6855588,30.452346 59.6854768,30.452497 59.6854882,30.4525787 59.6854944,30.4525812 59.6854845,30.4526564 59.6854895,30.4526646 59.6854579,30.4526841 59.6854592,30.4527224 59.6854618,30.4527565 59.685464,30.452777 59.6854654,30.4527686 59.6854977,30.4528746 59.6855048,30.4528788 59.6854915,30.4528865 59.6854815,30.4528993 59.6854656,30.452909 59.6854545,30.4529242 59.6854401,30.4529045 59.6854337,30.4529147 59.685423,30.4529312 59.685409,30.4529136 59.685403,30.4529349 59.6853856,30.4529284 59.6853815,30.4529266 59.6853774,30.4529297 59.6853727,30.452955 59.6853567,30.4529621 59.6853543,30.4529707 59.6853538,30.4529809 59.6853554,30.4530053 59.6853403,30.4530217 59.6853466,30.4530456 59.6853334,30.4530424 59.6853304,30.4530402 59.6853274,30.4530387 59.6853245,30.4530377 59.6853204,30.4530373 59.6853168,30.4530377 59.6853132,30.4530389 59.6853097,30.4530408 59.6853062,30.4530436 59.6853029,30.453047 59.6852998,30.4530511 59.6852969,30.4530559 59.6852942,30.4530612 59.6852918,30.4530685 59.6852893,30.4530765 59.6852873,30.4530849 59.6852859,30.4530936 59.6852852,30.4531024 59.685285,30.4531113 59.6852855,30.4531198 59.6852866,30.453128 59.6852882,30.4531357 59.6852905,30.453156 59.6852825,30.4531809 59.6852727,30.4532391 59.6852543,30.4532684 59.6852465,30.453297 59.6852393,30.4533302 59.6852316,30.4533524 59.685227,30.4533818 59.6852214,30.4533763 59.68521,30.4533752 59.6852006,30.4533796 59.6851915,30.4533891 59.6851835,30.4534028 59.6851772,30.4534196 59.6851732,30.453436 59.6851719,30.4534524 59.6851728,30.4534678 59.6851758,30.4534811 59.6851808,30.4534914 59.6851874,30.4534979 59.6851951,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540229 59.6848667,30.4540358 59.6848708,30.454047 59.6848759,30.4540561 59.6848821,30.454063 59.6848889,30.4540674 59.6848962,30.4540691 59.6849039,30.454068 59.6849115,30.4540643 59.6849189,30.454058 59.6849259,30.4540493 59.6849322,30.4540386 59.6849376,30.4540261 59.684942,30.4540122 59.6849452,30.4539975 59.684947,30.4539823 59.6849475,30.4539763 59.6849646,30.453965 59.6849637,30.4539277 59.6849606,30.4538688 59.6849558,30.4538059 59.6849506,30.4537818 59.6849487,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537483 59.6850789,30.4538612 59.6850876,30.4539247 59.6850925,30.4539406 59.6850424,30.4539786 59.6850519,30.4540221 59.685063,30.4540417 59.6850686,30.4540646 59.6850751,30.4541059 59.6850881,30.4541472 59.6851025,30.4541871 59.685118,30.4542254 59.6851343,30.4542622 59.6851516,30.4542942 59.6851377,30.4544115 59.6852076,30.4543838 59.6852203,30.4544141 59.6852392,30.4544426 59.6852588,30.4544691 59.6852791,30.4544972 59.6853031,30.4545225 59.6853279,30.4545451 59.6853534,30.4545829 59.6853462,30.4546442 59.6854282,30.4546081 59.6854351,30.4546263 59.6854611,30.4546407 59.6854917,30.4546513 59.6855211,30.4546577 59.6855509,30.4545667 59.6855569,30.4545695 59.6855677,30.4545502 59.6855689,30.4545521 59.6855762,30.454475 59.6855814,30.454473 59.685574,30.4544524 59.6855754,30.4544496 59.6855646,30.4544349 59.6855656,30.4543687 59.68557,30.4543619 59.6855441,30.4543522 59.6855184,30.4543439 59.6854971,30.4543247 59.685468,30.454307 59.6854434,30.4542866 59.6854194,30.4542636 59.6853959,30.4542381 59.6853732,30.4542062 59.685347,30.4541753 59.6853248,30.4541426 59.6853062,30.4541083 59.6852876,30.4540689 59.6852681,30.4540273 59.6852498,30.4539837 59.6852328,30.4539382 59.685217,30.4538908 59.6852026,30.4538877 59.6852126,30.4539316 59.6852158,30.4539299 59.6852218,30.4539248 59.68524,30.453923 59.6852463,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536921 59.6853643,30.4536766 59.6853631,30.453626 59.6853592,30.4536111 59.6853581,30.4536187 59.6853329,30.4534688 59.6853212,30.4534368 59.6853262,30.4533983 59.6853338,30.4533609 59.6853429,30.4533196 59.6853548,30.4532989 59.6853612,30.4532797 59.6853674,30.4532663 59.6853726,30.4532524 59.6853786,30.4532824 59.685393,30.4532679 59.6854007,30.4532019 59.6854356,30.4531881 59.6854429,30.4531582 59.6854285,30.453148 59.6854347,30.4531265 59.6854489,30.4531071 59.6854639,30.4530899 59.6854797,30.4530765 59.6854926,30.4530668 59.6855046,30.45306 59.6855156,30.4530542 59.6855302,30.4530286 59.6856166,30.4530752 59.6856201,30.4531272 59.685624,30.4531226 59.6856395,30.4531 59.6857159,30.4530826 59.6857747,30.4530781 59.6857896,30.4530261 59.6857857,30.4529796 59.6857822,30.4529559 59.6858622,30.4529512 59.6858765,30.4529486 59.6858896,30.4529478 59.6859011,30.4529482 59.6859112,30.452952 59.685926,30.4529569 59.6859385,30.4529638 59.6859523,30.4529718 59.6859649,30.4529791 59.6859757,30.4529856 59.6859841,30.4530246 59.6859742,30.4530338 59.6859834,30.4530767 59.6860278,30.4530861 59.6860371,30.4530482 59.6860471,30.4530568 59.6860536,30.4530663 59.6860602,30.4530779 59.6860674,30.4530898 59.6860742,30.4531018 59.6860809,30.4531136 59.6860871,30.4531293 59.6860946,30.453148 59.6861029,30.4531695 59.6861116,30.4532167 59.6861306,30.4533686 59.6861421,30.453376 59.6861189,30.4533898 59.68612,30.4534436 59.6861244,30.453457 59.6861255,30.4534496 59.6861487,30.4536027 59.6861615,30.4535556 59.6863114,30.4535958 59.6863065,30.4536563 59.6862959,30.4537014 59.6862868,30.4537731 59.6862682,30.4538342 59.6862493,30.453879 59.6862345,30.4539364 59.686214,30.4539768 59.686198,30.45402 59.6861768,30.4540703 59.686148,30.4541119 59.6861223,30.4541469 59.6860952,30.4541742 59.6860729,30.4541995 59.6860505,30.4542215 59.6860272,30.4542918 59.6860451,30.4543031 59.6860479,30.4543127 59.6860386,30.45433 59.6860429,30.4543365 59.6860363,30.4544062 59.6860538,30.4543997 59.6860604,30.4544185 59.6860651,30.4544086 59.6860746,30.4544964 59.6860973,30.4544728 59.6861239,30.4544395 59.686154,30.4544059 59.686181,30.4543849 59.6861942,30.4544137 59.6862059,30.4542999 59.6862773,30.4542705 59.6862654,30.4542363 59.6862844,30.4541965 59.6863041,30.4541887 59.6863078,30.4542091 59.6863195,30.4542 59.6863235,30.4541696 59.6863371,30.4541607 59.6863411,30.4541407 59.6863296,30.4541297 59.6863344,30.4540887 59.6863495,30.4540549 59.6863624,30.4540219 59.6863729,30.4540399 59.6863883,30.4540005 59.6863999,30.4540172 59.6864141,30.4540057 59.6864176,30.4539576 59.686432,30.4539454 59.6864356,30.4539287 59.6864214,30.4538817 59.6864353,30.453863 59.6864194,30.4538212 59.6864281,30.4537814 59.6864354,30.4537376 59.6864434,30.4536952 59.6864492,30.4536556 59.6864553,30.4536188 59.68646,30.4535812 59.6864636,30.453575 59.6864544,30.4534768 59.6864467,30.4533659 59.6864383,30.4533611 59.6864525,30.4533485 59.6864515,30.4533248 59.6864494,30.4532998 59.6864473,30.4532869 59.6864462,30.4532916 59.686432,30.4532725 59.6864305,30.4532826 59.6863983,30.4531363 59.6863866,30.453138 59.686381,30.4531642 59.6862975,30.4531215 59.686294,30.4531372 59.6862455,30.4531795 59.686249,30.453196 59.6861992,30.4531704 59.6862175,30.4531608 59.6862141,30.453137 59.6862056,30.4531278 59.6862023,30.4531534 59.686184,30.4530963 59.6861616,30.4530418 59.6861992,30.4530167 59.6861897,30.4529804 59.6861727,30.4529497 59.6861561,30.4529175 59.6861373,30.4528879 59.6861175,30.4528659 59.6861008,30.4528406 59.6860793,30.4528174 59.6860572,30.4527956 59.6860336,30.4527791 59.6860133,30.4527643 59.6859927,30.4527472 59.6859643,30.4527383 59.6859422,30.4527314 59.6859191,30.4527279 59.6859036,30.4528174 59.6858982,30.4528205 59.685852,30.4526832 59.6858416,30.4526091 59.6858361,30.4525803 59.6858339,30.4522804 59.6858113,30.4522477 59.6858088,30.4522705 59.6857319,30.4522289 59.6857289,30.4521745 59.6857248)))', 'relation', 1759666, '{"name": "Павловский дворец", "name:ca": "Palau Pàvlovsk", "name:en": "Pavlovsk Palace", "name:fi": "Pavlovskin_palatsi", "name:fr": "Palais de Pavlovsk", "name:pt": "Palácio de Pavlovsk", "name:uz": "Pavlovsk saroyi", "name:zh": "巴甫洛夫斯克的宫殿", "ref:okn": "781610399040316", "tourism": "museum", "building": "palace", "historic": "yes", "int_name": "Palais de Pavlovsk", "wikidata": "Q118121947", "wikipedia": "ru:Павловский дворец", "start_date": "1782", "addr:street": "Садовая улица", "roof:colour": "#DADDE2", "building:colour": "#FFE19C", "addr:housenumber": "20 литА"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534688 59.6853212,30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4538454 59.6853506,30.4536997 59.6853392,30.4536666 59.6853366,30.4536187 59.6853329,30.4534688 59.6853212)))', 'relation', 6636665, '{"name": "Южный корпус", "height": "15", "roof:shape": "pyramidal", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4534995 59.6852209,30.4535038 59.6852069,30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536141 59.6851263,30.4537003 59.685133,30.4539076 59.685149,30.4538908 59.6852026,30.4538877 59.6852126,30.4538783 59.6852431,30.4538761 59.6852503,30.4534995 59.6852209)))', 'relation', 14572597, '{"height": "15", "roof:shape": "gabled", "start_date": "1782", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C", "roof:orientation": "across"}', NULL), + ('SRID=4326;MULTIPOLYGON(((30.4535124 59.6851786,30.4535137 59.6851734,30.4535229 59.6851437,30.4535302 59.6851198,30.4536402 59.684764,30.4536417 59.6847593,30.4536451 59.6847596,30.4538117 59.6847727,30.4538368 59.6847747,30.4538611 59.6847766,30.4540318 59.6847901,30.4540295 59.6847972,30.4540145 59.684846,30.4540088 59.6848638,30.4540054 59.6848752,30.4537854 59.6848579,30.4537579 59.6849467,30.4537377 59.6850123,30.4537178 59.6850766,30.4537003 59.685133,30.453682 59.6851921,30.4535124 59.6851786)))', 'relation', 18019154, '{"height": "13", "roof:shape": "hipped", "roof:colour": "#DADDE2", "roof:height": "2", "building:part": "yes", "roof:material": "metal", "building:colour": "#FFE19C"}', NULL); +--Testcase 402: +SELECT count(*) FROM json_osm_test; +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 404: オーク / Sồi +SELECT * FROM json_osm_test WHERE t->>'genus' = 'Quercus'; +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 406: +SELECT * FROM json_osm_test WHERE (t->>'height')::float = 15; +--Testcase 407: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 408: 落葉性 / Cây rụng lá +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'deciduous'; +--Testcase 409: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; +--Testcase 410: 常緑植物 / Cây thường xanh +SELECT * FROM json_osm_test WHERE t->>'leaf_cycle' = 'evergreen'; + +--Testcase 411: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; +--Testcase 412: XVIII cent. +SELECT * FROM json_osm_test WHERE t->>'start_date' = 'C18'; + +--Testcase 413: +DELETE FROM json_osm_test; + +--Testcase 500: +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/init_data/init.sql b/sql/init_data/init.sql index a294fff3..ff6bb708 100644 --- a/sql/init_data/init.sql +++ b/sql/init_data/init.sql @@ -49,6 +49,14 @@ CREATE TABLE "type_MACADDR8pk" (col macaddr8 primary key); CREATE TABLE "type_MACADDR8" (i int, m macaddr8); CREATE VIEW "type_MACADDR8+" AS SELECT *, typeof("m") t, length("m") l, cast("m" as text) tx FROM "type_macaddr8"; CREATE TABLE "types_PostGIS" (i int, gm geometry, gg geography, r raster, t text, gm1 geometry, gg1 geography); +CREATE TABLE "type_JSON" (i int, j json, ot varchar(8), oi int, q text[], j1 json, ot1 text, oi1 int2); +CREATE TABLE "type_JSONB" (i int, j jsonb, ot varchar(8), oi int, q text[], j1 jsonb, ot1 text, oi1 int2); +CREATE VIEW "type_JSONB+" AS SELECT + *, + typeof("j") t, + length("j") l, + substr(hex(cast("j" as text)), 1, 16) || '...' tx +FROM "type_JSONB"; CREATE TABLE BitT (p integer primary key, a BIT(3), b BIT VARYING(5)); CREATE TABLE notype (a); CREATE TABLE typetest (i integer, v varchar(10) , c char(10), t text, d datetime, ti timestamp); @@ -80,6 +88,14 @@ CREATE TABLE alltypetest ( c24 datetime); INSERT INTO alltypetest VALUES (583647, 127, 12767, 388607, 2036854775807, 573709551615, 2036854775807, 'abcdefghij', 'abcdefghijjhgfjfuafh', 'Côte dIvoire Fijifoxju', 'Hôm nay tôi rất vui', 'I am happy today', '今日はとても幸せです 今日はとても幸せです', 'The quick brown fox jumps o' , 'ABCDEFGHIJKLMNOPQRSTUVWX', x'4142434445', 3.40E+18, 1.79769E+108, 1.79769E+88, 1.79E+108, 1234, 99999.99999, '9999-12-31', '9999-12-31 23:59:59'); +CREATE TABLE json_osm_test ( + wkt text NULL, + osm_type varchar(8) NULL, + osm_id int8 NULL, + tags json NULL, + way_nodes int8[] NULL +); + -- a table that is missing some fields CREATE TABLE shorty ( id integer primary key, diff --git a/sqlite_fdw--1.0--1.1.sql b/sqlite_fdw--1.0--1.1.sql index 0ab38ec5..7c8bc4d9 100644 --- a/sqlite_fdw--1.0--1.1.sql +++ b/sqlite_fdw--1.0--1.1.sql @@ -33,3 +33,19 @@ IS 'SQLite foreign data wrapper options validator'; COMMENT ON FOREIGN DATA WRAPPER sqlite_fdw IS 'SQLite foreign data wrapper'; + +CREATE OR REPLACE FUNCTION sqlite_fdw_sqlite_version() +RETURNS int +AS 'MODULE_PATHNAME' +LANGUAGE C STRICT VOLATILE PARALLEL SAFE; + +COMMENT ON FUNCTION sqlite_fdw_sqlite_version() +IS 'Returns used SQLite code version'; + +CREATE OR REPLACE FUNCTION sqlite_fdw_sqlite_code_source() +RETURNS text +AS 'MODULE_PATHNAME' +LANGUAGE C STRICT VOLATILE PARALLEL SAFE; + +COMMENT ON FUNCTION sqlite_fdw_sqlite_code_source() +IS 'Returns used SQLite code source with commit point'; diff --git a/sqlite_fdw.c b/sqlite_fdw.c index 2159ea21..bfa56787 100644 --- a/sqlite_fdw.c +++ b/sqlite_fdw.c @@ -170,6 +170,8 @@ extern PGDLLEXPORT Datum sqlite_fdw_handler(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(sqlite_fdw_handler); PG_FUNCTION_INFO_V1(sqlite_fdw_version); +PG_FUNCTION_INFO_V1(sqlite_fdw_sqlite_version); +PG_FUNCTION_INFO_V1(sqlite_fdw_sqlite_code_source); static void sqliteGetForeignRelSize(PlannerInfo *root, @@ -497,6 +499,18 @@ sqlite_fdw_version(PG_FUNCTION_ARGS) PG_RETURN_INT32(CODE_VERSION); } +Datum +sqlite_fdw_sqlite_version(PG_FUNCTION_ARGS) +{ + PG_RETURN_INT32(sqlite3_libversion_number()); +} + +Datum +sqlite_fdw_sqlite_code_source(PG_FUNCTION_ARGS) +{ + PG_RETURN_TEXT_P(cstring_to_text(sqlite3_sourceid())); +} + /* Wrapper for sqlite3_prepare */ static void sqlite_prepare_wrapper(ForeignServer *server, sqlite3 * db, char *query, sqlite3_stmt * *stmt, @@ -4847,6 +4861,8 @@ sqlite_to_pg_type(StringInfo str, char *type) {"macaddr8"}, {"geometry"}, {"geography"}, + {"jsonb"}, + {"json"}, {NULL} }; @@ -4994,10 +5010,10 @@ sqlite_execute_insert(EState *estate, int i; Relation rel = resultRelInfo->ri_RelationDesc; Oid foreignTableId = RelationGetRelid(rel); - #if PG_VERSION_NUM >= 140000 TupleDesc tupdesc = RelationGetDescr(rel); #endif + elog(DEBUG1, "sqlite_fdw : %s for RelId %u", __func__, foreignTableId); oldcontext = MemoryContextSwitchTo(fmstate->temp_cxt); @@ -5024,8 +5040,8 @@ sqlite_execute_insert(EState *estate, sqlite_prepare_wrapper(fmstate->server, fmstate->conn, fmstate->query, &fmstate->stmt, NULL, true); } -#endif +#endif for (i = 0; i < *numSlots; i++) { foreach(lc, fmstate->retrieved_attrs) @@ -5462,10 +5478,21 @@ sqlite_affinity_eqv_to_pgtype(Oid type) { switch (type) { - case INT2OID: + /* some popular first */ + case VARCHAROID: + case TEXTOID: + case JSONOID: + case NAMEOID: + case DATEOID: + case TIMEOID: + case TIMESTAMPOID: + case TIMESTAMPTZOID: + case BPCHAROID: + return SQLITE3_TEXT; case INT4OID: - case INT8OID: case BOOLOID: + case INT8OID: + case INT2OID: case BITOID: case VARBITOID: return SQLITE_INTEGER; @@ -5477,6 +5504,7 @@ sqlite_affinity_eqv_to_pgtype(Oid type) case UUIDOID: case MACADDROID: case MACADDR8OID: + case JSONBOID: return SQLITE_BLOB; default: if (listed_datatype_oid(type, -1, postGisSQLiteCompatibleTypes)) @@ -5542,22 +5570,22 @@ static void conversion_error_callback(void *arg) { ConversionLocation *errpos = (ConversionLocation *) arg; - Relation rel = errpos->rel; - ForeignScanState *fsstate = errpos->fsstate; - const char *attname = NULL; - const char *relname = NULL; - bool is_wholerow = false; - Form_pg_attribute att = errpos->att; - Oid pgtyp = att->atttypid; - int32 pgtypmod = att->atttypmod; - NameData pgColND = att->attname; - const char *pg_dataTypeName = NULL; - const char *sqlite_affinity = NULL; - const char *pg_good_affinity = NULL; - const int max_logged_byte_length = NAMEDATALEN * 2; - int value_byte_size_blob_or_utf8 = sqlite3_value_bytes (errpos->val); - int value_aff = sqlite3_value_type(errpos->val); - int affinity_for_pg_column = sqlite_affinity_eqv_to_pgtype(pgtyp); + Relation rel = errpos->rel; + ForeignScanState *fsstate = errpos->fsstate; + const char *attname = NULL; + const char *relname = NULL; + bool is_wholerow = false; + Form_pg_attribute att = errpos->att; + Oid pgtyp = att->atttypid; + int32 pgtypmod = att->atttypmod; + NameData pgColND = att->attname; + const char *pg_dataTypeName = NULL; + const char *sqlite_affinity = NULL; + const char *pg_good_affinity = NULL; + const int max_logged_byte_length = NAMEDATALEN * 2; + int value_byte_size_blob_or_utf8 = sqlite3_value_bytes (errpos->val); + int value_aff = sqlite3_value_type(errpos->val); + int affinity_for_pg_column = sqlite_affinity_eqv_to_pgtype(pgtyp); pg_dataTypeName = TypeNameToString(makeTypeNameFromOid(pgtyp, pgtypmod)); sqlite_affinity = sqlite_datatype(value_aff); diff --git a/sqlite_query.c b/sqlite_query.c index 1693d8a7..9f039717 100644 --- a/sqlite_query.c +++ b/sqlite_query.c @@ -26,6 +26,7 @@ #include "parser/parse_type.h" #include "utils/builtins.h" #include "utils/inet.h" +#include "utils/jsonb.h" #include "utils/lsyscache.h" #include "utils/timestamp.h" #include "utils/uuid.h" @@ -37,6 +38,8 @@ static char * sqlite_text_value_to_pg_db_encoding(sqlite3_value *val); static char * int642binstr(sqlite3_int64 num, char *s, size_t len); +static inline blobOutput + sqlite_make_JSONb (char* s); /* * sqlite_value_to_pg_error @@ -76,6 +79,19 @@ sqlite_convert_to_pg(Form_pg_attribute att, sqlite3_value * val, AttInMetadata * switch (pgtyp) { + /* popular first */ + case VARCHAROID: + case CHAROID: + case TEXTOID: + case DATEOID: + case TIMEOID: + case NAMEOID: + case BPCHAROID: + { + valstr = sqlite_text_value_to_pg_db_encoding(val); + /* use valstr after switch */ + break; + } case BOOLOID: { switch (sqlite_value_affinity) @@ -520,17 +536,71 @@ sqlite_convert_to_pg(Form_pg_attribute att, sqlite3_value * val, AttInMetadata * } break; } - case BPCHAROID: - case VARCHAROID: - case CHAROID: - case TEXTOID: case JSONOID: + { + switch (sqlite_value_affinity) + { + case SQLITE_INTEGER: + case SQLITE_FLOAT: + { + sqlite_value_to_pg_error(); + break; + } + case SQLITE_BLOB: + { + ereport(ERROR, (errcode(ERRCODE_FDW_INVALID_DATA_TYPE), + errmsg("you should disable column_type = text for this column, because there is possible jsonb value"))); + break; + } + case SQLITE3_TEXT:/* <-- proper and recommended SQLite affinity of value for pgtyp */ + { + if (value_byte_size_blob_or_utf8) + { + valstr = sqlite_text_value_to_pg_db_encoding(val); + /* use valstr after switch */ + break; + } + else + pg_column_void_text_error(); + break; + } + default: + { + sqlite_value_to_pg_error(); + break; + } + } + break; + } case JSONBOID: - case NAMEOID: - case DATEOID: - case TIMEOID: { - valstr = sqlite_text_value_to_pg_db_encoding(val); + switch (sqlite_value_affinity) + { + case SQLITE_INTEGER: + case SQLITE_FLOAT: + case SQLITE_BLOB: + { + sqlite_value_to_pg_error(); + break; + } + case SQLITE3_TEXT:/* <-- there is normalization function for text affinity only output */ + { + if (value_byte_size_blob_or_utf8) + { + valstr = sqlite_text_value_to_pg_db_encoding(val); + /* use valstr after switch */ + break; + } + else + pg_column_void_text_error(); + break; + } + default: + { + sqlite_value_to_pg_error(); + break; + } + } break; } default: @@ -692,6 +762,33 @@ sqlite_bind_sql_var(Form_pg_attribute att, int attnum, Datum value, sqlite3_stmt switch (type) { + /* popular first */ + case TEXTOID: + case VARCHAROID: + case JSONOID: + case TIMESTAMPTZOID: + case DATEOID: + case NAMEOID: + case TIMEOID: + case TIMESTAMPOID: + case BPCHAROID: + { + /* Bind as text because SQLite does not have these types */ + char *outputString = NULL; + Oid outputFunctionId = InvalidOid; + bool typeVarLength = false; + int pg_database_encoding = GetDatabaseEncoding(); /* very fast call, see PostgreSQL mbutils.c */ + char *utf8_text_value = NULL; + + getTypeOutputInfo(type, &outputFunctionId, &typeVarLength); + outputString = OidOutputFunctionCall(outputFunctionId, value); + if (pg_database_encoding == PG_UTF8) + utf8_text_value = outputString; + else + utf8_text_value = (char *) pg_do_encoding_conversion((unsigned char *) outputString, strlen(outputString), pg_database_encoding, PG_UTF8); + ret = sqlite3_bind_text(stmt, attnum, utf8_text_value, -1, SQLITE_TRANSIENT); + break; + } case INT2OID: { int16 dat = DatumGetInt16(value); @@ -745,33 +842,6 @@ sqlite_bind_sql_var(Form_pg_attribute att, int attnum, Datum value, sqlite3_stmt ret = sqlite3_bind_int(stmt, attnum, dat); break; } - - case BPCHAROID: - case VARCHAROID: - case TEXTOID: - case JSONOID: - case NAMEOID: - case TIMEOID: - case TIMESTAMPOID: - case TIMESTAMPTZOID: - case DATEOID: - { - /* Bind as text because SQLite does not have these types */ - char *outputString = NULL; - Oid outputFunctionId = InvalidOid; - bool typeVarLength = false; - int pg_database_encoding = GetDatabaseEncoding(); /* very fast call, see PostgreSQL mbutils.c */ - char *utf8_text_value = NULL; - - getTypeOutputInfo(type, &outputFunctionId, &typeVarLength); - outputString = OidOutputFunctionCall(outputFunctionId, value); - if (pg_database_encoding == PG_UTF8) - utf8_text_value = outputString; - else - utf8_text_value = (char *) pg_do_encoding_conversion((unsigned char *) outputString, strlen(outputString), pg_database_encoding, PG_UTF8); - ret = sqlite3_bind_text(stmt, attnum, utf8_text_value, -1, SQLITE_TRANSIENT); - break; - } case BYTEAOID: { blobOutput b = sqlite_datum_to_blob(value); @@ -925,6 +995,24 @@ sqlite_bind_sql_var(Form_pg_attribute att, int attnum, Datum value, sqlite3_stmt ret = sqlite3_bind_int64(stmt, attnum, dat); break; } + case JSONBOID: + { + /* Bind as text because there are different JSONb presentation formats in PostgreSQL and SQLite */ + int pg_database_encoding = GetDatabaseEncoding(); /* very fast call, see PostgreSQL mbutils.c */ + char *utf8_text_value = NULL; + Datum d = DirectFunctionCall1(jsonb_out, JsonbPGetDatum((const Jsonb *) value)); + char *outputString = DatumGetCString(d); + blobOutput jsonb; + + if (pg_database_encoding == PG_UTF8) + utf8_text_value = outputString; + else + utf8_text_value = (char *)pg_do_encoding_conversion((unsigned char *) outputString, strlen(outputString), pg_database_encoding, PG_UTF8); + jsonb = sqlite_make_JSONb(utf8_text_value); + ret = sqlite3_bind_blob(stmt, attnum, jsonb.dat, jsonb.len, SQLITE_TRANSIENT); + pfree((char *)jsonb.dat); + break; + } default: { NameData pgColND = att->attname; @@ -1092,3 +1180,63 @@ listed_datatype_oid(Oid atttypid, int32 atttypmod, const char** arr) return listed; } +static inline blobOutput +sqlite_make_JSONb (char* s) +{ + int len = 0; + char *dat = NULL; + sqlite3 *conn = NULL; + int rc; + const char *err; + sqlite3_stmt *res; + char *query; + char *base = "select jsonb('%s') j;"; + + rc = sqlite3_open_v2("", &conn, SQLITE_OPEN_MEMORY|SQLITE_OPEN_READONLY, NULL); + if (rc != SQLITE_OK) { + sqlite3_close(conn); + ereport(ERROR, + (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION), + errmsg("Failed to open in-memory SQLite for JSONB creating, result code %d", rc))); + } + + query = palloc0(strlen(s) + strlen(base)); + sprintf(query, base, s); + rc = sqlite3_prepare_v2(conn, query, -1, &res, 0); + + if (rc != SQLITE_OK) { + err = sqlite3_errmsg(conn); + sqlite3_close(conn); + pfree(query); + ereport(ERROR, + (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION), + errmsg("Failed to fetch JSONb, result code %d, error %s", rc, err))); + } + + rc = sqlite3_step(res); + if (rc == SQLITE_ROW) { + sqlite3_value *val = sqlite3_column_value(res, 0); + int sqlite_value_affinity = sqlite3_value_type(val); + const char *dat1 = sqlite3_value_blob(val); + + if(sqlite_value_affinity != SQLITE_BLOB) + { + sqlite3_finalize(res); + pfree(query); + sqlite3_close(conn); + ereport(ERROR, + (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION), + errmsg("Failed to fetch JSONb, not a BLOB result, affinity code %d, %s", sqlite_value_affinity, query))); + } + + len = sqlite3_column_bytes(res, 0); + dat = palloc(len + 1); + memcpy(dat, dat1, len); + } + + sqlite3_finalize(res); + pfree(query); + sqlite3_close(conn); + return (struct blobOutput){dat, len}; +} + diff --git a/test.sh b/test.sh index 41ead99c..f2bf16a5 100755 --- a/test.sh +++ b/test.sh @@ -4,10 +4,16 @@ rm -rf "$testdir"; mkdir "$testdir"; cp -a sql/init_data/*.data "$testdir"; -sqlite3 "$testdir/post.db" < sql/init_data/init_post.sql; -sqlite3 "$testdir/core.db" < sql/init_data/init_core.sql; -sqlite3 "$testdir/common.db" < sql/init_data/init.sql; -sqlite3 "$testdir/selectfunc.db" < sql/init_data/init_selectfunc.sql; +if [ -z "$SQLITE_FOR_TESTING_DIR" ]; then + sqlite3=sqlite3; +else + sqlite3="$SQLITE_FOR_TESTING_DIR/bin/sqlite3"; +fi + +"$sqlite3" "$testdir/post.db" < sql/init_data/init_post.sql; +"$sqlite3" "$testdir/core.db" < sql/init_data/init_core.sql; +"$sqlite3" "$testdir/common.db" < sql/init_data/init.sql; +"$sqlite3" "$testdir/selectfunc.db" < sql/init_data/init_selectfunc.sql; while (( "$#" )); do export "$1"; @@ -15,9 +21,12 @@ while (( "$#" )); do done [ "$ENABLE_GIS" == "1" ] && gispref='post' || gispref='no'; +[ "$ENABLE_GIS" == "1" ] && gissuf='ok' || gissuf='no'; # full test sequence, you can put your own test sequence here -export REGRESS="extra/sqlite_fdw_post types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/numeric types/${gispref}gis types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw type_${gispref}gis aggregate selectfunc"; +type_tests="types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/json types/numeric types/${gispref}gis types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid"; +gis_dep_tests="gis_$gissuf/type gis_$gissuf/auto_import"; +export REGRESS="libsqlite extra/sqlite_fdw_post $type_tests extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $gis_dep_tests"; make clean $1; make $1; make check $1 | tee make_check.out; From e6bac9b02b7201dd9b302672563e0465c3fdf078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Thu, 27 Feb 2025 17:20:06 +0300 Subject: [PATCH 2/9] expand README about separate SQLite version --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c1f6dd2b..eaa41009 100644 --- a/README.md +++ b/README.md @@ -128,11 +128,11 @@ For Debian or Ubuntu: `apt-get install libspatialite-dev` - for SpatiaLite ↔ PostGIS transformations -Instead of `libsqlite3-dev` you can also [download SQLite source code][1] and [build SQLite][2] with FTS5 for full-text search. +Instead of system `libsqlite3-dev` from OS repository you can also [download SQLite source code][1] and [build separate SQLite version][2] with FTS5 for full-text search. The directory of this not OS SQLite library can be pointed as prefix in a command like `./configure --enable-fts5 --prefix=$SQLITE_FOR_TESTING_DIR` before `make` and `make install`. #### 2. Build and install sqlite_fdw -`sqlite_fdw` does not require to be compiled with PostGIS and `libspatialite-dev`. They are used only for full test which includes test for GIS support. +`sqlite_fdw` does not require to be compiled with PostGIS and `libspatialite-dev`. They are used only for full tests which includes test for GIS support. Before building please add a directory of `pg_config` to PATH or ensure `pg_config` program is accessible from command line only by the name. @@ -142,12 +142,21 @@ make USE_PGXS=1 make install USE_PGXS=1 ``` +Build and install without GIS support against separate compiled and installed SQLite version placed at given path. +Example for `/opt/testing/other/SQLite/3.49.0`. +```sh +make USE_PGXS=1 SQLITE_FOR_TESTING_DIR=/opt/testing/other/SQLite/3.49.0 +make install USE_PGXS=1 SQLITE_FOR_TESTING_DIR=/opt/testing/other/SQLite/3.49.0 +``` + Build and install with GIS support ```sh make USE_PGXS=1 ENABLE_GIS=1 make install USE_PGXS=1 ENABLE_GIS=1 ``` +Also you can build against separate SQLite version and with GIS support using obvious combination of variables. + If you want to build `sqlite_fdw` in a source tree of PostgreSQL, use ```sh make @@ -705,6 +714,7 @@ The test cases for each version are based on the test of corresponding version o You can execute test by test.sh directly. The version of PostgreSQL is detected automatically by $(VERSION) variable in Makefile. The corresponding sql and expected directory will be used to compare the result. For example, for Postgres 15.0, you can execute "test.sh" directly, and the sql/15.0 and expected/15.0 will be used to compare automatically. +Please don't forget a command like `export SQLITE_FOR_TESTING_DIR=` with the same path as in SQLite's `./configure --prefix` berfore testing if you want to test not against your OS SQLite version, but against separate downloaded, compiled and installed SQLite version. Test data directory is `/tmp/sqlite_fdw_test`. If you have `/tmp` mounted as `tmpfs` the tests will be up to 800% faster. From 91f634ac31725478b3ac26bbaae3b45571cb756c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Fri, 28 Feb 2025 06:56:01 +0300 Subject: [PATCH 3/9] Refactor to `psprinft()` --- sqlite_query.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sqlite_query.c b/sqlite_query.c index 9f039717..20602919 100644 --- a/sqlite_query.c +++ b/sqlite_query.c @@ -1186,13 +1186,11 @@ sqlite_make_JSONb (char* s) int len = 0; char *dat = NULL; sqlite3 *conn = NULL; - int rc; const char *err; sqlite3_stmt *res; char *query; - char *base = "select jsonb('%s') j;"; + int rc = sqlite3_open_v2("", &conn, SQLITE_OPEN_MEMORY|SQLITE_OPEN_READONLY, NULL); - rc = sqlite3_open_v2("", &conn, SQLITE_OPEN_MEMORY|SQLITE_OPEN_READONLY, NULL); if (rc != SQLITE_OK) { sqlite3_close(conn); ereport(ERROR, @@ -1200,8 +1198,7 @@ sqlite_make_JSONb (char* s) errmsg("Failed to open in-memory SQLite for JSONB creating, result code %d", rc))); } - query = palloc0(strlen(s) + strlen(base)); - sprintf(query, base, s); + query = psprintf("select jsonb('%s') j;", s); rc = sqlite3_prepare_v2(conn, query, -1, &res, 0); if (rc != SQLITE_OK) { From 78f3154c521b698dbeef35dacb1fdbf4f4b5b27e Mon Sep 17 00:00:00 2001 From: mkgrgis Date: Thu, 27 Mar 2025 12:35:11 +0300 Subject: [PATCH 4/9] Remove conflicts before merge --- Makefile | 10 +- expected/13.15/types/bitstring.out | 810 ------------------ expected/13.15/types/bool.out | 1276 ---------------------------- expected/13.15/types/macaddr.out | 954 --------------------- expected/13.15/types/macaddr8.out | 955 --------------------- expected/13.15/types/uuid.out | 549 ------------ expected/14.12/types/bitstring.out | 810 ------------------ expected/14.12/types/bool.out | 1276 ---------------------------- expected/14.12/types/macaddr.out | 957 --------------------- expected/14.12/types/macaddr8.out | 958 --------------------- expected/14.12/types/uuid.out | 551 ------------ expected/15.7/extra/bitstring.out | 810 ------------------ expected/15.7/types/bitstring.out | 810 ------------------ expected/15.7/types/bool.out | 1276 ---------------------------- expected/15.7/types/macaddr.out | 957 --------------------- expected/15.7/types/macaddr8.out | 958 --------------------- expected/15.7/types/uuid.out | 551 ------------ expected/16.3/extra/bitstring.out | 810 ------------------ expected/16.3/types/bitstring.out | 810 ------------------ expected/16.3/types/bool.out | 1276 ---------------------------- expected/16.3/types/macaddr.out | 957 --------------------- expected/16.3/types/macaddr8.out | 958 --------------------- expected/16.3/types/uuid.out | 551 ------------ expected/17.0/types/bitstring.out | 810 ------------------ expected/17.0/types/bool.out | 1276 ---------------------------- expected/17.0/types/macaddr.out | 957 --------------------- expected/17.0/types/macaddr8.out | 958 --------------------- expected/17.0/types/uuid.out | 551 ------------ test.sh | 12 +- 29 files changed, 17 insertions(+), 24377 deletions(-) delete mode 100644 expected/13.15/types/bitstring.out delete mode 100644 expected/13.15/types/bool.out delete mode 100644 expected/13.15/types/macaddr.out delete mode 100644 expected/13.15/types/macaddr8.out delete mode 100644 expected/13.15/types/uuid.out delete mode 100644 expected/14.12/types/bitstring.out delete mode 100644 expected/14.12/types/bool.out delete mode 100644 expected/14.12/types/macaddr.out delete mode 100644 expected/14.12/types/macaddr8.out delete mode 100644 expected/14.12/types/uuid.out delete mode 100644 expected/15.7/extra/bitstring.out delete mode 100644 expected/15.7/types/bitstring.out delete mode 100644 expected/15.7/types/bool.out delete mode 100644 expected/15.7/types/macaddr.out delete mode 100644 expected/15.7/types/macaddr8.out delete mode 100644 expected/15.7/types/uuid.out delete mode 100644 expected/16.3/extra/bitstring.out delete mode 100644 expected/16.3/types/bitstring.out delete mode 100644 expected/16.3/types/bool.out delete mode 100644 expected/16.3/types/macaddr.out delete mode 100644 expected/16.3/types/macaddr8.out delete mode 100644 expected/16.3/types/uuid.out delete mode 100644 expected/17.0/types/bitstring.out delete mode 100644 expected/17.0/types/bool.out delete mode 100644 expected/17.0/types/macaddr.out delete mode 100644 expected/17.0/types/macaddr8.out delete mode 100644 expected/17.0/types/uuid.out diff --git a/Makefile b/Makefile index 1b0b3c32..652ed825 100644 --- a/Makefile +++ b/Makefile @@ -25,13 +25,13 @@ GISPREF = no endif # Tests for PostgreSQL data types support -TYPETESTS = types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/json types/numeric types/$(GISTEST) types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid +TYPETESTS = types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/numeric types/$(GISTEST) types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid # Tests with different versions with GIS support and without GIS support GISDEPTESTS = gis_$(GISPREF)/type gis_$(GISPREF)/auto_import ifndef REGRESS # System tests, full default sequence -REGRESS = libsqlite extra/sqlite_fdw_post $(TYPETESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GISDEPTESTS) +REGRESS = extra/sqlite_fdw_post $(TYPETESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GISDEPTESTS) endif # Other encodings also are tested. Client encoding should be UTF-8- @@ -56,6 +56,10 @@ ifdef ENABLE_GIS override SHLIB_LINK += -lspatialite endif +ifdef ENABLE_GIS +override SHLIB_LINK += -lspatialite +endif + ifdef USE_PGXS PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) @@ -92,9 +96,9 @@ $(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/gis_$(GISPREF)) # $(info REGRESS is $(REGRESS)) # $(info DLSUFFIX is $(DLSUFFIX)) + ifdef ENABLE_GIS check: temp-install temp-install: EXTRA_INSTALL+=contrib/postgis checkprep: EXTRA_INSTALL+=contrib/postgis endif - diff --git a/expected/13.15/types/bitstring.out b/expected/13.15/types/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/13.15/types/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/13.15/types/bool.out b/expected/13.15/types/bool.out deleted file mode 100644 index 814110a1..00000000 --- a/expected/13.15/types/bool.out +++ /dev/null @@ -1,1276 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 000: -CREATE EXTENSION sqlite_fdw; ---Testcase 001: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 01: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; ---Testcase 02: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); ---Testcase 03: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); ---Testcase 04: -CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); ---Testcase 05: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; ---Testcase 06: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); ---Testcase 07: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); ---Testcase 08: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); ---Testcase 09: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); ---Testcase 10: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); ---Testcase 11: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); ---Testcase 12: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); ---Testcase 13: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); ---Testcase 14: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); ---Testcase 15: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); ---Testcase 16: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); ---Testcase 17: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); ---Testcase 18: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); ---Testcase 19: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); ---Testcase 20: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); ---Testcase 21: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); ---Testcase 22: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); ---Testcase 23: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); ---Testcase 24: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); ---Testcase 25: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); ---Testcase 26: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); ---Testcase 27: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); ---Testcase 28: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); ---Testcase 29: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); ---Testcase 30: -SELECT * FROM "type_BOOLEAN"; - i | b -----+------- - 1 | 1 - 2 | 0 - 3 | true - 4 | false - 5 | true - 6 | false - 7 | Yes - 8 | YeS - 9 | yes - 10 | no - 11 | No - 12 | nO - 13 | off - 14 | oFf - 15 | on - 16 | ON - 17 | t - 18 | T - 19 | Y - 20 | y - 21 | F - 22 | f - 23 | x - 24 | 0 - 25 | 1 - 26 | -(26 rows) - ---Testcase 31: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 32: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN"; - QUERY PLAN ---------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN" - Output: i, b - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" -(3 rows) - ---Testcase 33: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN+"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" - Output: i, b, t, l - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 34: ERR - invalid text affinity because not ISO:SQL text input -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "text" affinity (1 bytes) : 'x' -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 35 -DELETE FROM "type_BOOLEAN" WHERE i = 23; ---Testcase 36: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 37: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; - i | b | t | l -----+---+------+--- - 26 | | null | -(1 row) - ---Testcase 38: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 -(24 rows) - ---Testcase 39: -SELECT * FROM "type_BOOLEAN+" WHERE b; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 3 | t | text | 4 - 5 | t | text | 4 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 25 | t | integer | 1 -(13 rows) - ---Testcase 40: -SELECT * FROM "type_BOOLEAN+" WHERE NOT b; - i | b | t | l -----+---+---------+--- - 2 | f | integer | 1 - 4 | f | text | 5 - 6 | f | text | 5 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 -(11 rows) - ---Testcase 41: -CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 42: -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ---Testcase 43: -INSERT INTO "type_BOOLEANpk" VALUES (FALSE); ---Testcase 44: ERR - primary key -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) ---Testcase 45: -DELETE FROM "type_BOOLEANpk"; ---Testcase 46: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; ---Testcase 47: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); ---Testcase 48: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 49: ERR - invalid float for bool column -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "real" affinity : 3.14159265358979 -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 50 -DELETE FROM "type_BOOLEAN" WHERE i = 27; ---Testcase 51: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 52: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE b; - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 53: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; - QUERY PLAN ----------------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 54: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE b; - QUERY PLAN ------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 55: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE NOT b; - QUERY PLAN ------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 56: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" b - Output: i, b, t, l, (NOT b) - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 57: -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - i | b | t | l | nb -----+---+---------+---+---- - 1 | t | integer | 1 | f - 2 | f | integer | 1 | t - 3 | t | text | 4 | f - 4 | f | text | 5 | t - 5 | t | text | 4 | f - 6 | f | text | 5 | t - 7 | t | text | 3 | f - 8 | t | text | 3 | f - 9 | t | text | 3 | f - 10 | f | text | 2 | t - 11 | f | text | 2 | t - 12 | f | text | 2 | t - 13 | f | text | 3 | t - 14 | f | text | 3 | t - 15 | t | text | 2 | f - 16 | t | text | 2 | f - 17 | t | text | 1 | f - 18 | t | text | 1 | f - 19 | t | text | 1 | f - 20 | t | text | 1 | f - 21 | f | text | 1 | t - 22 | f | text | 1 | t - 24 | f | integer | 1 | t - 25 | t | integer | 1 | f - 26 | | null | | -(25 rows) - ---Testcase 58: -CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); ---Testcase 59: see INIT.SQL with mixed affinity boolean data -SELECT * FROM "type_BOOLEAN_oper"; - i | i1 | b1 | i2 | b2 ------+----+----+----+---- - 1 | 1 | t | 1 | t - 2 | 1 | t | 2 | t - 3 | 1 | t | 3 | t - 4 | 1 | t | 4 | t - 5 | 1 | t | 5 | t - 6 | 1 | t | 6 | t - 7 | 1 | t | 7 | t - 8 | 1 | t | 8 | t - 9 | 1 | t | 9 | t - 10 | 1 | t | 10 | t - 11 | 1 | t | 11 | t - 12 | 1 | t | 12 | t - 13 | 1 | t | 13 | t - 14 | 1 | t | 14 | f - 15 | 1 | t | 15 | f - 16 | 1 | t | 16 | f - 17 | 1 | t | 17 | f - 18 | 1 | t | 18 | f - 19 | 1 | t | 19 | f - 20 | 1 | t | 20 | f - 21 | 1 | t | 21 | f - 22 | 1 | t | 22 | f - 23 | 1 | t | 23 | f - 24 | 1 | t | 24 | f - 25 | 1 | t | 25 | f - 26 | 1 | t | 26 | f - 27 | 1 | t | 27 | - 28 | 2 | t | 1 | t - 29 | 2 | t | 2 | t - 30 | 2 | t | 3 | t - 31 | 2 | t | 4 | t - 32 | 2 | t | 5 | t - 33 | 2 | t | 6 | t - 34 | 2 | t | 7 | t - 35 | 2 | t | 8 | t - 36 | 2 | t | 9 | t - 37 | 2 | t | 10 | t - 38 | 2 | t | 11 | t - 39 | 2 | t | 12 | t - 40 | 2 | t | 13 | t - 41 | 2 | t | 14 | f - 42 | 2 | t | 15 | f - 43 | 2 | t | 16 | f - 44 | 2 | t | 17 | f - 45 | 2 | t | 18 | f - 46 | 2 | t | 19 | f - 47 | 2 | t | 20 | f - 48 | 2 | t | 21 | f - 49 | 2 | t | 22 | f - 50 | 2 | t | 23 | f - 51 | 2 | t | 24 | f - 52 | 2 | t | 25 | f - 53 | 2 | t | 26 | f - 54 | 2 | t | 27 | - 55 | 3 | t | 1 | t - 56 | 3 | t | 2 | t - 57 | 3 | t | 3 | t - 58 | 3 | t | 4 | t - 59 | 3 | t | 5 | t - 60 | 3 | t | 6 | t - 61 | 3 | t | 7 | t - 62 | 3 | t | 8 | t - 63 | 3 | t | 9 | t - 64 | 3 | t | 10 | t - 65 | 3 | t | 11 | t - 66 | 3 | t | 12 | t - 67 | 3 | t | 13 | t - 68 | 3 | t | 14 | f - 69 | 3 | t | 15 | f - 70 | 3 | t | 16 | f - 71 | 3 | t | 17 | f - 72 | 3 | t | 18 | f - 73 | 3 | t | 19 | f - 74 | 3 | t | 20 | f - 75 | 3 | t | 21 | f - 76 | 3 | t | 22 | f - 77 | 3 | t | 23 | f - 78 | 3 | t | 24 | f - 79 | 3 | t | 25 | f - 80 | 3 | t | 26 | f - 81 | 3 | t | 27 | - 82 | 4 | t | 1 | t - 83 | 4 | t | 2 | t - 84 | 4 | t | 3 | t - 85 | 4 | t | 4 | t - 86 | 4 | t | 5 | t - 87 | 4 | t | 6 | t - 88 | 4 | t | 7 | t - 89 | 4 | t | 8 | t - 90 | 4 | t | 9 | t - 91 | 4 | t | 10 | t - 92 | 4 | t | 11 | t - 93 | 4 | t | 12 | t - 94 | 4 | t | 13 | t - 95 | 4 | t | 14 | f - 96 | 4 | t | 15 | f - 97 | 4 | t | 16 | f - 98 | 4 | t | 17 | f - 99 | 4 | t | 18 | f - 100 | 4 | t | 19 | f - 101 | 4 | t | 20 | f - 102 | 4 | t | 21 | f - 103 | 4 | t | 22 | f - 104 | 4 | t | 23 | f - 105 | 4 | t | 24 | f - 106 | 4 | t | 25 | f - 107 | 4 | t | 26 | f - 108 | 4 | t | 27 | - 109 | 5 | t | 1 | t - 110 | 5 | t | 2 | t - 111 | 5 | t | 3 | t - 112 | 5 | t | 4 | t - 113 | 5 | t | 5 | t - 114 | 5 | t | 6 | t - 115 | 5 | t | 7 | t - 116 | 5 | t | 8 | t - 117 | 5 | t | 9 | t - 118 | 5 | t | 10 | t - 119 | 5 | t | 11 | t - 120 | 5 | t | 12 | t - 121 | 5 | t | 13 | t - 122 | 5 | t | 14 | f - 123 | 5 | t | 15 | f - 124 | 5 | t | 16 | f - 125 | 5 | t | 17 | f - 126 | 5 | t | 18 | f - 127 | 5 | t | 19 | f - 128 | 5 | t | 20 | f - 129 | 5 | t | 21 | f - 130 | 5 | t | 22 | f - 131 | 5 | t | 23 | f - 132 | 5 | t | 24 | f - 133 | 5 | t | 25 | f - 134 | 5 | t | 26 | f - 135 | 5 | t | 27 | - 136 | 6 | t | 1 | t - 137 | 6 | t | 2 | t - 138 | 6 | t | 3 | t - 139 | 6 | t | 4 | t - 140 | 6 | t | 5 | t - 141 | 6 | t | 6 | t - 142 | 6 | t | 7 | t - 143 | 6 | t | 8 | t - 144 | 6 | t | 9 | t - 145 | 6 | t | 10 | t - 146 | 6 | t | 11 | t - 147 | 6 | t | 12 | t - 148 | 6 | t | 13 | t - 149 | 6 | t | 14 | f - 150 | 6 | t | 15 | f - 151 | 6 | t | 16 | f - 152 | 6 | t | 17 | f - 153 | 6 | t | 18 | f - 154 | 6 | t | 19 | f - 155 | 6 | t | 20 | f - 156 | 6 | t | 21 | f - 157 | 6 | t | 22 | f - 158 | 6 | t | 23 | f - 159 | 6 | t | 24 | f - 160 | 6 | t | 25 | f - 161 | 6 | t | 26 | f - 162 | 6 | t | 27 | - 163 | 7 | t | 1 | t - 164 | 7 | t | 2 | t - 165 | 7 | t | 3 | t - 166 | 7 | t | 4 | t - 167 | 7 | t | 5 | t - 168 | 7 | t | 6 | t - 169 | 7 | t | 7 | t - 170 | 7 | t | 8 | t - 171 | 7 | t | 9 | t - 172 | 7 | t | 10 | t - 173 | 7 | t | 11 | t - 174 | 7 | t | 12 | t - 175 | 7 | t | 13 | t - 176 | 7 | t | 14 | f - 177 | 7 | t | 15 | f - 178 | 7 | t | 16 | f - 179 | 7 | t | 17 | f - 180 | 7 | t | 18 | f - 181 | 7 | t | 19 | f - 182 | 7 | t | 20 | f - 183 | 7 | t | 21 | f - 184 | 7 | t | 22 | f - 185 | 7 | t | 23 | f - 186 | 7 | t | 24 | f - 187 | 7 | t | 25 | f - 188 | 7 | t | 26 | f - 189 | 7 | t | 27 | - 190 | 8 | t | 1 | t - 191 | 8 | t | 2 | t - 192 | 8 | t | 3 | t - 193 | 8 | t | 4 | t - 194 | 8 | t | 5 | t - 195 | 8 | t | 6 | t - 196 | 8 | t | 7 | t - 197 | 8 | t | 8 | t - 198 | 8 | t | 9 | t - 199 | 8 | t | 10 | t - 200 | 8 | t | 11 | t - 201 | 8 | t | 12 | t - 202 | 8 | t | 13 | t - 203 | 8 | t | 14 | f - 204 | 8 | t | 15 | f - 205 | 8 | t | 16 | f - 206 | 8 | t | 17 | f - 207 | 8 | t | 18 | f - 208 | 8 | t | 19 | f - 209 | 8 | t | 20 | f - 210 | 8 | t | 21 | f - 211 | 8 | t | 22 | f - 212 | 8 | t | 23 | f - 213 | 8 | t | 24 | f - 214 | 8 | t | 25 | f - 215 | 8 | t | 26 | f - 216 | 8 | t | 27 | - 217 | 9 | t | 1 | t - 218 | 9 | t | 2 | t - 219 | 9 | t | 3 | t - 220 | 9 | t | 4 | t - 221 | 9 | t | 5 | t - 222 | 9 | t | 6 | t - 223 | 9 | t | 7 | t - 224 | 9 | t | 8 | t - 225 | 9 | t | 9 | t - 226 | 9 | t | 10 | t - 227 | 9 | t | 11 | t - 228 | 9 | t | 12 | t - 229 | 9 | t | 13 | t - 230 | 9 | t | 14 | f - 231 | 9 | t | 15 | f - 232 | 9 | t | 16 | f - 233 | 9 | t | 17 | f - 234 | 9 | t | 18 | f - 235 | 9 | t | 19 | f - 236 | 9 | t | 20 | f - 237 | 9 | t | 21 | f - 238 | 9 | t | 22 | f - 239 | 9 | t | 23 | f - 240 | 9 | t | 24 | f - 241 | 9 | t | 25 | f - 242 | 9 | t | 26 | f - 243 | 9 | t | 27 | - 244 | 10 | t | 1 | t - 245 | 10 | t | 2 | t - 246 | 10 | t | 3 | t - 247 | 10 | t | 4 | t - 248 | 10 | t | 5 | t - 249 | 10 | t | 6 | t - 250 | 10 | t | 7 | t - 251 | 10 | t | 8 | t - 252 | 10 | t | 9 | t - 253 | 10 | t | 10 | t - 254 | 10 | t | 11 | t - 255 | 10 | t | 12 | t - 256 | 10 | t | 13 | t - 257 | 10 | t | 14 | f - 258 | 10 | t | 15 | f - 259 | 10 | t | 16 | f - 260 | 10 | t | 17 | f - 261 | 10 | t | 18 | f - 262 | 10 | t | 19 | f - 263 | 10 | t | 20 | f - 264 | 10 | t | 21 | f - 265 | 10 | t | 22 | f - 266 | 10 | t | 23 | f - 267 | 10 | t | 24 | f - 268 | 10 | t | 25 | f - 269 | 10 | t | 26 | f - 270 | 10 | t | 27 | - 271 | 11 | t | 1 | t - 272 | 11 | t | 2 | t - 273 | 11 | t | 3 | t - 274 | 11 | t | 4 | t - 275 | 11 | t | 5 | t - 276 | 11 | t | 6 | t - 277 | 11 | t | 7 | t - 278 | 11 | t | 8 | t - 279 | 11 | t | 9 | t - 280 | 11 | t | 10 | t - 281 | 11 | t | 11 | t - 282 | 11 | t | 12 | t - 283 | 11 | t | 13 | t - 284 | 11 | t | 14 | f - 285 | 11 | t | 15 | f - 286 | 11 | t | 16 | f - 287 | 11 | t | 17 | f - 288 | 11 | t | 18 | f - 289 | 11 | t | 19 | f - 290 | 11 | t | 20 | f - 291 | 11 | t | 21 | f - 292 | 11 | t | 22 | f - 293 | 11 | t | 23 | f - 294 | 11 | t | 24 | f - 295 | 11 | t | 25 | f - 296 | 11 | t | 26 | f - 297 | 11 | t | 27 | - 298 | 12 | t | 1 | t - 299 | 12 | t | 2 | t - 300 | 12 | t | 3 | t - 301 | 12 | t | 4 | t - 302 | 12 | t | 5 | t - 303 | 12 | t | 6 | t - 304 | 12 | t | 7 | t - 305 | 12 | t | 8 | t - 306 | 12 | t | 9 | t - 307 | 12 | t | 10 | t - 308 | 12 | t | 11 | t - 309 | 12 | t | 12 | t - 310 | 12 | t | 13 | t - 311 | 12 | t | 14 | f - 312 | 12 | t | 15 | f - 313 | 12 | t | 16 | f - 314 | 12 | t | 17 | f - 315 | 12 | t | 18 | f - 316 | 12 | t | 19 | f - 317 | 12 | t | 20 | f - 318 | 12 | t | 21 | f - 319 | 12 | t | 22 | f - 320 | 12 | t | 23 | f - 321 | 12 | t | 24 | f - 322 | 12 | t | 25 | f - 323 | 12 | t | 26 | f - 324 | 12 | t | 27 | - 325 | 13 | t | 1 | t - 326 | 13 | t | 2 | t - 327 | 13 | t | 3 | t - 328 | 13 | t | 4 | t - 329 | 13 | t | 5 | t - 330 | 13 | t | 6 | t - 331 | 13 | t | 7 | t - 332 | 13 | t | 8 | t - 333 | 13 | t | 9 | t - 334 | 13 | t | 10 | t - 335 | 13 | t | 11 | t - 336 | 13 | t | 12 | t - 337 | 13 | t | 13 | t - 338 | 13 | t | 14 | f - 339 | 13 | t | 15 | f - 340 | 13 | t | 16 | f - 341 | 13 | t | 17 | f - 342 | 13 | t | 18 | f - 343 | 13 | t | 19 | f - 344 | 13 | t | 20 | f - 345 | 13 | t | 21 | f - 346 | 13 | t | 22 | f - 347 | 13 | t | 23 | f - 348 | 13 | t | 24 | f - 349 | 13 | t | 25 | f - 350 | 13 | t | 26 | f - 351 | 13 | t | 27 | - 352 | 14 | f | 1 | t - 353 | 14 | f | 2 | t - 354 | 14 | f | 3 | t - 355 | 14 | f | 4 | t - 356 | 14 | f | 5 | t - 357 | 14 | f | 6 | t - 358 | 14 | f | 7 | t - 359 | 14 | f | 8 | t - 360 | 14 | f | 9 | t - 361 | 14 | f | 10 | t - 362 | 14 | f | 11 | t - 363 | 14 | f | 12 | t - 364 | 14 | f | 13 | t - 365 | 14 | f | 14 | f - 366 | 14 | f | 15 | f - 367 | 14 | f | 16 | f - 368 | 14 | f | 17 | f - 369 | 14 | f | 18 | f - 370 | 14 | f | 19 | f - 371 | 14 | f | 20 | f - 372 | 14 | f | 21 | f - 373 | 14 | f | 22 | f - 374 | 14 | f | 23 | f - 375 | 14 | f | 24 | f - 376 | 14 | f | 25 | f - 377 | 14 | f | 26 | f - 378 | 14 | f | 27 | - 379 | 15 | f | 1 | t - 380 | 15 | f | 2 | t - 381 | 15 | f | 3 | t - 382 | 15 | f | 4 | t - 383 | 15 | f | 5 | t - 384 | 15 | f | 6 | t - 385 | 15 | f | 7 | t - 386 | 15 | f | 8 | t - 387 | 15 | f | 9 | t - 388 | 15 | f | 10 | t - 389 | 15 | f | 11 | t - 390 | 15 | f | 12 | t - 391 | 15 | f | 13 | t - 392 | 15 | f | 14 | f - 393 | 15 | f | 15 | f - 394 | 15 | f | 16 | f - 395 | 15 | f | 17 | f - 396 | 15 | f | 18 | f - 397 | 15 | f | 19 | f - 398 | 15 | f | 20 | f - 399 | 15 | f | 21 | f - 400 | 15 | f | 22 | f - 401 | 15 | f | 23 | f - 402 | 15 | f | 24 | f - 403 | 15 | f | 25 | f - 404 | 15 | f | 26 | f - 405 | 15 | f | 27 | - 406 | 16 | f | 1 | t - 407 | 16 | f | 2 | t - 408 | 16 | f | 3 | t - 409 | 16 | f | 4 | t - 410 | 16 | f | 5 | t - 411 | 16 | f | 6 | t - 412 | 16 | f | 7 | t - 413 | 16 | f | 8 | t - 414 | 16 | f | 9 | t - 415 | 16 | f | 10 | t - 416 | 16 | f | 11 | t - 417 | 16 | f | 12 | t - 418 | 16 | f | 13 | t - 419 | 16 | f | 14 | f - 420 | 16 | f | 15 | f - 421 | 16 | f | 16 | f - 422 | 16 | f | 17 | f - 423 | 16 | f | 18 | f - 424 | 16 | f | 19 | f - 425 | 16 | f | 20 | f - 426 | 16 | f | 21 | f - 427 | 16 | f | 22 | f - 428 | 16 | f | 23 | f - 429 | 16 | f | 24 | f - 430 | 16 | f | 25 | f - 431 | 16 | f | 26 | f - 432 | 16 | f | 27 | - 433 | 17 | f | 1 | t - 434 | 17 | f | 2 | t - 435 | 17 | f | 3 | t - 436 | 17 | f | 4 | t - 437 | 17 | f | 5 | t - 438 | 17 | f | 6 | t - 439 | 17 | f | 7 | t - 440 | 17 | f | 8 | t - 441 | 17 | f | 9 | t - 442 | 17 | f | 10 | t - 443 | 17 | f | 11 | t - 444 | 17 | f | 12 | t - 445 | 17 | f | 13 | t - 446 | 17 | f | 14 | f - 447 | 17 | f | 15 | f - 448 | 17 | f | 16 | f - 449 | 17 | f | 17 | f - 450 | 17 | f | 18 | f - 451 | 17 | f | 19 | f - 452 | 17 | f | 20 | f - 453 | 17 | f | 21 | f - 454 | 17 | f | 22 | f - 455 | 17 | f | 23 | f - 456 | 17 | f | 24 | f - 457 | 17 | f | 25 | f - 458 | 17 | f | 26 | f - 459 | 17 | f | 27 | - 460 | 18 | f | 1 | t - 461 | 18 | f | 2 | t - 462 | 18 | f | 3 | t - 463 | 18 | f | 4 | t - 464 | 18 | f | 5 | t - 465 | 18 | f | 6 | t - 466 | 18 | f | 7 | t - 467 | 18 | f | 8 | t - 468 | 18 | f | 9 | t - 469 | 18 | f | 10 | t - 470 | 18 | f | 11 | t - 471 | 18 | f | 12 | t - 472 | 18 | f | 13 | t - 473 | 18 | f | 14 | f - 474 | 18 | f | 15 | f - 475 | 18 | f | 16 | f - 476 | 18 | f | 17 | f - 477 | 18 | f | 18 | f - 478 | 18 | f | 19 | f - 479 | 18 | f | 20 | f - 480 | 18 | f | 21 | f - 481 | 18 | f | 22 | f - 482 | 18 | f | 23 | f - 483 | 18 | f | 24 | f - 484 | 18 | f | 25 | f - 485 | 18 | f | 26 | f - 486 | 18 | f | 27 | - 487 | 19 | f | 1 | t - 488 | 19 | f | 2 | t - 489 | 19 | f | 3 | t - 490 | 19 | f | 4 | t - 491 | 19 | f | 5 | t - 492 | 19 | f | 6 | t - 493 | 19 | f | 7 | t - 494 | 19 | f | 8 | t - 495 | 19 | f | 9 | t - 496 | 19 | f | 10 | t - 497 | 19 | f | 11 | t - 498 | 19 | f | 12 | t - 499 | 19 | f | 13 | t - 500 | 19 | f | 14 | f - 501 | 19 | f | 15 | f - 502 | 19 | f | 16 | f - 503 | 19 | f | 17 | f - 504 | 19 | f | 18 | f - 505 | 19 | f | 19 | f - 506 | 19 | f | 20 | f - 507 | 19 | f | 21 | f - 508 | 19 | f | 22 | f - 509 | 19 | f | 23 | f - 510 | 19 | f | 24 | f - 511 | 19 | f | 25 | f - 512 | 19 | f | 26 | f - 513 | 19 | f | 27 | - 514 | 20 | f | 1 | t - 515 | 20 | f | 2 | t - 516 | 20 | f | 3 | t - 517 | 20 | f | 4 | t - 518 | 20 | f | 5 | t - 519 | 20 | f | 6 | t - 520 | 20 | f | 7 | t - 521 | 20 | f | 8 | t - 522 | 20 | f | 9 | t - 523 | 20 | f | 10 | t - 524 | 20 | f | 11 | t - 525 | 20 | f | 12 | t - 526 | 20 | f | 13 | t - 527 | 20 | f | 14 | f - 528 | 20 | f | 15 | f - 529 | 20 | f | 16 | f - 530 | 20 | f | 17 | f - 531 | 20 | f | 18 | f - 532 | 20 | f | 19 | f - 533 | 20 | f | 20 | f - 534 | 20 | f | 21 | f - 535 | 20 | f | 22 | f - 536 | 20 | f | 23 | f - 537 | 20 | f | 24 | f - 538 | 20 | f | 25 | f - 539 | 20 | f | 26 | f - 540 | 20 | f | 27 | - 541 | 21 | f | 1 | t - 542 | 21 | f | 2 | t - 543 | 21 | f | 3 | t - 544 | 21 | f | 4 | t - 545 | 21 | f | 5 | t - 546 | 21 | f | 6 | t - 547 | 21 | f | 7 | t - 548 | 21 | f | 8 | t - 549 | 21 | f | 9 | t - 550 | 21 | f | 10 | t - 551 | 21 | f | 11 | t - 552 | 21 | f | 12 | t - 553 | 21 | f | 13 | t - 554 | 21 | f | 14 | f - 555 | 21 | f | 15 | f - 556 | 21 | f | 16 | f - 557 | 21 | f | 17 | f - 558 | 21 | f | 18 | f - 559 | 21 | f | 19 | f - 560 | 21 | f | 20 | f - 561 | 21 | f | 21 | f - 562 | 21 | f | 22 | f - 563 | 21 | f | 23 | f - 564 | 21 | f | 24 | f - 565 | 21 | f | 25 | f - 566 | 21 | f | 26 | f - 567 | 21 | f | 27 | - 568 | 22 | f | 1 | t - 569 | 22 | f | 2 | t - 570 | 22 | f | 3 | t - 571 | 22 | f | 4 | t - 572 | 22 | f | 5 | t - 573 | 22 | f | 6 | t - 574 | 22 | f | 7 | t - 575 | 22 | f | 8 | t - 576 | 22 | f | 9 | t - 577 | 22 | f | 10 | t - 578 | 22 | f | 11 | t - 579 | 22 | f | 12 | t - 580 | 22 | f | 13 | t - 581 | 22 | f | 14 | f - 582 | 22 | f | 15 | f - 583 | 22 | f | 16 | f - 584 | 22 | f | 17 | f - 585 | 22 | f | 18 | f - 586 | 22 | f | 19 | f - 587 | 22 | f | 20 | f - 588 | 22 | f | 21 | f - 589 | 22 | f | 22 | f - 590 | 22 | f | 23 | f - 591 | 22 | f | 24 | f - 592 | 22 | f | 25 | f - 593 | 22 | f | 26 | f - 594 | 22 | f | 27 | - 595 | 23 | f | 1 | t - 596 | 23 | f | 2 | t - 597 | 23 | f | 3 | t - 598 | 23 | f | 4 | t - 599 | 23 | f | 5 | t - 600 | 23 | f | 6 | t - 601 | 23 | f | 7 | t - 602 | 23 | f | 8 | t - 603 | 23 | f | 9 | t - 604 | 23 | f | 10 | t - 605 | 23 | f | 11 | t - 606 | 23 | f | 12 | t - 607 | 23 | f | 13 | t - 608 | 23 | f | 14 | f - 609 | 23 | f | 15 | f - 610 | 23 | f | 16 | f - 611 | 23 | f | 17 | f - 612 | 23 | f | 18 | f - 613 | 23 | f | 19 | f - 614 | 23 | f | 20 | f - 615 | 23 | f | 21 | f - 616 | 23 | f | 22 | f - 617 | 23 | f | 23 | f - 618 | 23 | f | 24 | f - 619 | 23 | f | 25 | f - 620 | 23 | f | 26 | f - 621 | 23 | f | 27 | - 622 | 24 | f | 1 | t - 623 | 24 | f | 2 | t - 624 | 24 | f | 3 | t - 625 | 24 | f | 4 | t - 626 | 24 | f | 5 | t - 627 | 24 | f | 6 | t - 628 | 24 | f | 7 | t - 629 | 24 | f | 8 | t - 630 | 24 | f | 9 | t - 631 | 24 | f | 10 | t - 632 | 24 | f | 11 | t - 633 | 24 | f | 12 | t - 634 | 24 | f | 13 | t - 635 | 24 | f | 14 | f - 636 | 24 | f | 15 | f - 637 | 24 | f | 16 | f - 638 | 24 | f | 17 | f - 639 | 24 | f | 18 | f - 640 | 24 | f | 19 | f - 641 | 24 | f | 20 | f - 642 | 24 | f | 21 | f - 643 | 24 | f | 22 | f - 644 | 24 | f | 23 | f - 645 | 24 | f | 24 | f - 646 | 24 | f | 25 | f - 647 | 24 | f | 26 | f - 648 | 24 | f | 27 | - 649 | 25 | f | 1 | t - 650 | 25 | f | 2 | t - 651 | 25 | f | 3 | t - 652 | 25 | f | 4 | t - 653 | 25 | f | 5 | t - 654 | 25 | f | 6 | t - 655 | 25 | f | 7 | t - 656 | 25 | f | 8 | t - 657 | 25 | f | 9 | t - 658 | 25 | f | 10 | t - 659 | 25 | f | 11 | t - 660 | 25 | f | 12 | t - 661 | 25 | f | 13 | t - 662 | 25 | f | 14 | f - 663 | 25 | f | 15 | f - 664 | 25 | f | 16 | f - 665 | 25 | f | 17 | f - 666 | 25 | f | 18 | f - 667 | 25 | f | 19 | f - 668 | 25 | f | 20 | f - 669 | 25 | f | 21 | f - 670 | 25 | f | 22 | f - 671 | 25 | f | 23 | f - 672 | 25 | f | 24 | f - 673 | 25 | f | 25 | f - 674 | 25 | f | 26 | f - 675 | 25 | f | 27 | - 676 | 26 | f | 1 | t - 677 | 26 | f | 2 | t - 678 | 26 | f | 3 | t - 679 | 26 | f | 4 | t - 680 | 26 | f | 5 | t - 681 | 26 | f | 6 | t - 682 | 26 | f | 7 | t - 683 | 26 | f | 8 | t - 684 | 26 | f | 9 | t - 685 | 26 | f | 10 | t - 686 | 26 | f | 11 | t - 687 | 26 | f | 12 | t - 688 | 26 | f | 13 | t - 689 | 26 | f | 14 | f - 690 | 26 | f | 15 | f - 691 | 26 | f | 16 | f - 692 | 26 | f | 17 | f - 693 | 26 | f | 18 | f - 694 | 26 | f | 19 | f - 695 | 26 | f | 20 | f - 696 | 26 | f | 21 | f - 697 | 26 | f | 22 | f - 698 | 26 | f | 23 | f - 699 | 26 | f | 24 | f - 700 | 26 | f | 25 | f - 701 | 26 | f | 26 | f - 702 | 26 | f | 27 | - 703 | 27 | | 1 | t - 704 | 27 | | 2 | t - 705 | 27 | | 3 | t - 706 | 27 | | 4 | t - 707 | 27 | | 5 | t - 708 | 27 | | 6 | t - 709 | 27 | | 7 | t - 710 | 27 | | 8 | t - 711 | 27 | | 9 | t - 712 | 27 | | 10 | t - 713 | 27 | | 11 | t - 714 | 27 | | 12 | t - 715 | 27 | | 13 | t - 716 | 27 | | 14 | f - 717 | 27 | | 15 | f - 718 | 27 | | 16 | f - 719 | 27 | | 17 | f - 720 | 27 | | 18 | f - 721 | 27 | | 19 | f - 722 | 27 | | 20 | f - 723 | 27 | | 21 | f - 724 | 27 | | 22 | f - 725 | 27 | | 23 | f - 726 | 27 | | 24 | f - 727 | 27 | | 25 | f - 728 | 27 | | 26 | f - 729 | 27 | | 27 | -(729 rows) - ---Testcase 60: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 61: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - b1 | b2 | a | o -----+----+---+--- - f | f | f | f - f | t | f | t - f | | f | - t | f | f | t - t | t | t | t - t | | | t - | f | f | - | t | | t - | | | -(9 rows) - ---Testcase 62: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 63: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - b1 | b2 | a | o -----+----+---+--- - t | t | t | t -(1 row) - ---Testcase 64: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 65: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - b1 | b2 | a | o -----+----+---+--- - f | t | f | t - t | f | f | t - t | t | t | t - t | | | t - | t | | t -(5 rows) - ---Testcase 66: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; - QUERY PLAN ------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) -(3 rows) - ---Testcase 67: -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; ---Testcase 68: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - t | f - t | t - t | - | f - | t - | -(6 rows) - ---Testcase 69: -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; ---Testcase 70: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) -(3 rows) - ---Testcase 71: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | t - f | - | f - | -(5 rows) - ---Testcase 72: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN_oper" - -> Foreign Delete on public."type_BOOLEAN_oper" - SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) -(3 rows) - ---Testcase 73: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; ---Testcase 74: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | - | f - | -(4 rows) - ---Testcase 75: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; ---Testcase 76: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 77: -DELETE FROM "type_BOOLEAN_oper" WHERE b2; ---Testcase 78: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 79: -DELETE FROM "type_BOOLEAN"; ---Testcase 003: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BOOLEAN" -drop cascades to foreign table "type_BOOLEAN+" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to server sqlite2 diff --git a/expected/13.15/types/macaddr.out b/expected/13.15/types/macaddr.out deleted file mode 100644 index daf8b87a..00000000 --- a/expected/13.15/types/macaddr.out +++ /dev/null @@ -1,954 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); ---Testcase 012: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); ---Testcase 013: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); ---Testcase 014: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); ---Testcase 015: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); ---Testcase 016: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); ---Testcase 017: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); ---Testcase 018: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); ---Testcase 019: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); ---Testcase 020: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); ---Testcase 021: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); ---Testcase 022: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); ---Testcase 023: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); ---Testcase 024: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; ---Testcase 029: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); ---Testcase 030: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); ---Testcase 031: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); ---Testcase 032: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); ---Testcase 033: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); ---Testcase 034: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); ---Testcase 035: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); ---Testcase 036: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); ---Testcase 037: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); ---Testcase 038: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); ---Testcase 039: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); ---Testcase 040: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); ---Testcase 041: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); ---Testcase 042: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - -> Result - Output: 30, '08:00:2f:01:02:03'::macaddr -(3 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); ---Testcase 046: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); ---Testcase 047: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); ---Testcase 048: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); ---Testcase 049: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); ---Testcase 050: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); ---Testcase 051: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); ---Testcase 052: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); ---Testcase 053: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); ---Testcase 054: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); ---Testcase 055: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); ---Testcase 056: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); ---Testcase 057: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); ---Testcase 058: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - -> Result - Output: 44, '08:00:2f:01:02:03'::macaddr -(3 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); ---Testcase 062: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); ---Testcase 063: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); ---Testcase 064: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); ---Testcase 065: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); ---Testcase 066: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); ---Testcase 067: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); ---Testcase 068: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); ---Testcase 069: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); ---Testcase 070: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); ---Testcase 071: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); ---Testcase 072: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); ---Testcase 073: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); ---Testcase 074: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - -> Result - Output: 58, '08:00:2f:01:02:03'::macaddr -(3 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); ---Testcase 077: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); ---Testcase 108: -SELECT * FROM "type_MACADDR+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------+------+----+------------------- - 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; - i | m -----+------------------- - 63 | 00:00:00:00:00:01 - 64 | 00:00:00:00:00:02 - 65 | 00:00:00:00:00:03 - 66 | 00:00:01:00:00:00 - 67 | 00:00:02:00:00:00 - 68 | 00:00:03:00:00:00 - 60 | 01:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 62 | 03:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; - i | m -----+------------------- - 62 | 03:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 60 | 01:00:00:00:00:00 - 68 | 00:00:03:00:00:00 - 67 | 00:00:02:00:00:00 - 66 | 00:00:01:00:00:00 - 65 | 00:00:00:00:00:03 - 64 | 00:00:00:00:00:02 - 63 | 00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDRpk"; - col -------------------- - 01:02:03:04:05:06 - 01:02:03:04:05:06 - 01:02:03:04:05:06 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDRpk"; ---no macaddr operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m | '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m & '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m > '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m < '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m = '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m >= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <> '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR+" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to server sqlite2 diff --git a/expected/13.15/types/macaddr8.out b/expected/13.15/types/macaddr8.out deleted file mode 100644 index cdc2e84e..00000000 --- a/expected/13.15/types/macaddr8.out +++ /dev/null @@ -1,955 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); ---Testcase 012: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); ---Testcase 013: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); ---Testcase 014: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); ---Testcase 015: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); ---Testcase 016: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); ---Testcase 017: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); ---Testcase 018: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); ---Testcase 019: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); ---Testcase 020: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); ---Testcase 021: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); ---Testcase 022: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); ---Testcase 023: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); ---Testcase 024: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; ---Testcase 029: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); ---Testcase 030: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); ---Testcase 031: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); ---Testcase 032: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); ---Testcase 033: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); ---Testcase 034: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); ---Testcase 035: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); ---Testcase 036: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); ---Testcase 037: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); ---Testcase 038: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); ---Testcase 039: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); ---Testcase 040: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); ---Testcase 041: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); ---Testcase 042: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - -> Result - Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 -(3 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); ---Testcase 046: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); ---Testcase 047: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); ---Testcase 048: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); ---Testcase 049: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); ---Testcase 050: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); ---Testcase 051: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); ---Testcase 052: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); ---Testcase 053: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); ---Testcase 054: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); ---Testcase 055: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); ---Testcase 056: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); ---Testcase 057: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); ---Testcase 058: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - -> Result - Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 -(3 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); ---Testcase 062: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); ---Testcase 063: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); ---Testcase 064: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); ---Testcase 065: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); ---Testcase 066: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); ---Testcase 067: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); ---Testcase 068: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); ---Testcase 069: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); ---Testcase 070: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); ---Testcase 071: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); ---Testcase 072: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); ---Testcase 073: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); ---Testcase 074: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - -> Result - Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 -(3 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); ---Testcase 077: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); ---Testcase 108: -SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------------+------+----+------------------------- - 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR8"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; - i | m -----+------------------------- - 63 | 00:00:00:00:00:00:00:01 - 64 | 00:00:00:00:00:00:00:02 - 65 | 00:00:00:00:00:00:00:03 - 66 | 00:00:00:00:01:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 62 | 03:00:00:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; - i | m -----+------------------------- - 62 | 03:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 66 | 00:00:00:00:01:00:00:00 - 65 | 00:00:00:00:00:00:00:03 - 64 | 00:00:00:00:00:00:00:02 - 63 | 00:00:00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); -ERROR: option "column_type" provided more than once ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDR8pk"; - col -------------------------- - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDR8pk"; ---no macaddr8 operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "type_MACADDR8+" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to server sqlite2 diff --git a/expected/13.15/types/uuid.out b/expected/13.15/types/uuid.out deleted file mode 100644 index 15238843..00000000 --- a/expected/13.15/types/uuid.out +++ /dev/null @@ -1,549 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); ---Testcase 010: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; ---Testcase 011: -INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 012: -INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 013: -INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 014: -INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 015: -INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 016: -INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 017: -INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 018: -INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 019: -INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 020: -INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 021: -INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 022: -INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 023: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 024: -INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 025: -INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 026: -INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 027: -INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 029: -INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 030: -INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 031: -INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 032: -INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 033: -INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 034: -INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 035: -INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 036: -INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 037: -INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 038: -INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 039: -INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 040: -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 041: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - -> Result - Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(3 rows) - ---Testcase 042: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); ---Testcase 043: -INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 044: -INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 045: -INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 046: -INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 047: -INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 048: -INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 049: -INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 050: -INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 051: -INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 052: -INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 053: -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 054: -INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 055: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - -> Result - Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(3 rows) - ---Testcase 056: -CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); ---Testcase 057: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(40 rows) - ---Testcase 058: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 059: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 060: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 061: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 062: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 063: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 064: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 065: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 066: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 067: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; ---Testcase 068: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) -(3 rows) - ---Testcase 069: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 070: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) -(3 rows) - ---Testcase 071: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 072: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; ---Testcase 073: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) -(3 rows) - ---Testcase 074: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(21 rows) - ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; ---Testcase 076: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 -(1 row) - ---Testcase 077: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; ---Testcase 076: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 077: -SELECT * FROM "type_UUID+"; - i | u | t | l ----+---+---+--- -(0 rows) - ---Testcase 078: -INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); ---Testcase 079: -SELECT * FROM "type_UUID+" WHERE "i" = 41; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 -(1 row) - ---Testcase 080: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; ---Testcase 081: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 082: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 083: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 084: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) -(3 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 086: -INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); ---Testcase 087: -INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); ---Testcase 088: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 089: -SELECT * FROM "type_UUID+" WHERE "i" = 42; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 090: -SELECT * FROM "type_UUID+" WHERE "i" = 43; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 091: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); - QUERY PLAN ----------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) -(3 rows) - ---Testcase 092: -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); ---Testcase 093: -INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); ---Testcase 094: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 - 44 | | null | -(2 rows) - ---Testcase 095: -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - i | u | t | l -----+---+------+--- - 44 | | null | -(1 row) - ---Testcase 096: -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) -(3 rows) - ---Testcase 098: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) -(3 rows) - ---Testcase 100: -CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 101: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); ---Testcase 102: -INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 103: -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 104: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(2 rows) - ---Testcase 105: ERR - primary key -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) ---Testcase 106: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 107: NO ERR, but the same semantics! -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 108: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(3 rows) - ---Testcase 109: -DELETE FROM "type_UUIDpk"; ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_UUID+" -drop cascades to foreign table "type_UUIDpk" -drop cascades to server sqlite2 diff --git a/expected/14.12/types/bitstring.out b/expected/14.12/types/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/14.12/types/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/14.12/types/bool.out b/expected/14.12/types/bool.out deleted file mode 100644 index 814110a1..00000000 --- a/expected/14.12/types/bool.out +++ /dev/null @@ -1,1276 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 000: -CREATE EXTENSION sqlite_fdw; ---Testcase 001: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 01: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; ---Testcase 02: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); ---Testcase 03: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); ---Testcase 04: -CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); ---Testcase 05: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; ---Testcase 06: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); ---Testcase 07: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); ---Testcase 08: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); ---Testcase 09: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); ---Testcase 10: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); ---Testcase 11: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); ---Testcase 12: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); ---Testcase 13: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); ---Testcase 14: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); ---Testcase 15: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); ---Testcase 16: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); ---Testcase 17: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); ---Testcase 18: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); ---Testcase 19: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); ---Testcase 20: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); ---Testcase 21: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); ---Testcase 22: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); ---Testcase 23: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); ---Testcase 24: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); ---Testcase 25: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); ---Testcase 26: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); ---Testcase 27: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); ---Testcase 28: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); ---Testcase 29: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); ---Testcase 30: -SELECT * FROM "type_BOOLEAN"; - i | b -----+------- - 1 | 1 - 2 | 0 - 3 | true - 4 | false - 5 | true - 6 | false - 7 | Yes - 8 | YeS - 9 | yes - 10 | no - 11 | No - 12 | nO - 13 | off - 14 | oFf - 15 | on - 16 | ON - 17 | t - 18 | T - 19 | Y - 20 | y - 21 | F - 22 | f - 23 | x - 24 | 0 - 25 | 1 - 26 | -(26 rows) - ---Testcase 31: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 32: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN"; - QUERY PLAN ---------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN" - Output: i, b - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" -(3 rows) - ---Testcase 33: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN+"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" - Output: i, b, t, l - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 34: ERR - invalid text affinity because not ISO:SQL text input -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "text" affinity (1 bytes) : 'x' -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 35 -DELETE FROM "type_BOOLEAN" WHERE i = 23; ---Testcase 36: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 37: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; - i | b | t | l -----+---+------+--- - 26 | | null | -(1 row) - ---Testcase 38: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 -(24 rows) - ---Testcase 39: -SELECT * FROM "type_BOOLEAN+" WHERE b; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 3 | t | text | 4 - 5 | t | text | 4 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 25 | t | integer | 1 -(13 rows) - ---Testcase 40: -SELECT * FROM "type_BOOLEAN+" WHERE NOT b; - i | b | t | l -----+---+---------+--- - 2 | f | integer | 1 - 4 | f | text | 5 - 6 | f | text | 5 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 -(11 rows) - ---Testcase 41: -CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 42: -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ---Testcase 43: -INSERT INTO "type_BOOLEANpk" VALUES (FALSE); ---Testcase 44: ERR - primary key -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) ---Testcase 45: -DELETE FROM "type_BOOLEANpk"; ---Testcase 46: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; ---Testcase 47: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); ---Testcase 48: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 49: ERR - invalid float for bool column -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "real" affinity : 3.14159265358979 -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 50 -DELETE FROM "type_BOOLEAN" WHERE i = 27; ---Testcase 51: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 52: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE b; - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 53: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; - QUERY PLAN ----------------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 54: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE b; - QUERY PLAN ------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 55: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE NOT b; - QUERY PLAN ------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 56: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" b - Output: i, b, t, l, (NOT b) - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 57: -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - i | b | t | l | nb -----+---+---------+---+---- - 1 | t | integer | 1 | f - 2 | f | integer | 1 | t - 3 | t | text | 4 | f - 4 | f | text | 5 | t - 5 | t | text | 4 | f - 6 | f | text | 5 | t - 7 | t | text | 3 | f - 8 | t | text | 3 | f - 9 | t | text | 3 | f - 10 | f | text | 2 | t - 11 | f | text | 2 | t - 12 | f | text | 2 | t - 13 | f | text | 3 | t - 14 | f | text | 3 | t - 15 | t | text | 2 | f - 16 | t | text | 2 | f - 17 | t | text | 1 | f - 18 | t | text | 1 | f - 19 | t | text | 1 | f - 20 | t | text | 1 | f - 21 | f | text | 1 | t - 22 | f | text | 1 | t - 24 | f | integer | 1 | t - 25 | t | integer | 1 | f - 26 | | null | | -(25 rows) - ---Testcase 58: -CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); ---Testcase 59: see INIT.SQL with mixed affinity boolean data -SELECT * FROM "type_BOOLEAN_oper"; - i | i1 | b1 | i2 | b2 ------+----+----+----+---- - 1 | 1 | t | 1 | t - 2 | 1 | t | 2 | t - 3 | 1 | t | 3 | t - 4 | 1 | t | 4 | t - 5 | 1 | t | 5 | t - 6 | 1 | t | 6 | t - 7 | 1 | t | 7 | t - 8 | 1 | t | 8 | t - 9 | 1 | t | 9 | t - 10 | 1 | t | 10 | t - 11 | 1 | t | 11 | t - 12 | 1 | t | 12 | t - 13 | 1 | t | 13 | t - 14 | 1 | t | 14 | f - 15 | 1 | t | 15 | f - 16 | 1 | t | 16 | f - 17 | 1 | t | 17 | f - 18 | 1 | t | 18 | f - 19 | 1 | t | 19 | f - 20 | 1 | t | 20 | f - 21 | 1 | t | 21 | f - 22 | 1 | t | 22 | f - 23 | 1 | t | 23 | f - 24 | 1 | t | 24 | f - 25 | 1 | t | 25 | f - 26 | 1 | t | 26 | f - 27 | 1 | t | 27 | - 28 | 2 | t | 1 | t - 29 | 2 | t | 2 | t - 30 | 2 | t | 3 | t - 31 | 2 | t | 4 | t - 32 | 2 | t | 5 | t - 33 | 2 | t | 6 | t - 34 | 2 | t | 7 | t - 35 | 2 | t | 8 | t - 36 | 2 | t | 9 | t - 37 | 2 | t | 10 | t - 38 | 2 | t | 11 | t - 39 | 2 | t | 12 | t - 40 | 2 | t | 13 | t - 41 | 2 | t | 14 | f - 42 | 2 | t | 15 | f - 43 | 2 | t | 16 | f - 44 | 2 | t | 17 | f - 45 | 2 | t | 18 | f - 46 | 2 | t | 19 | f - 47 | 2 | t | 20 | f - 48 | 2 | t | 21 | f - 49 | 2 | t | 22 | f - 50 | 2 | t | 23 | f - 51 | 2 | t | 24 | f - 52 | 2 | t | 25 | f - 53 | 2 | t | 26 | f - 54 | 2 | t | 27 | - 55 | 3 | t | 1 | t - 56 | 3 | t | 2 | t - 57 | 3 | t | 3 | t - 58 | 3 | t | 4 | t - 59 | 3 | t | 5 | t - 60 | 3 | t | 6 | t - 61 | 3 | t | 7 | t - 62 | 3 | t | 8 | t - 63 | 3 | t | 9 | t - 64 | 3 | t | 10 | t - 65 | 3 | t | 11 | t - 66 | 3 | t | 12 | t - 67 | 3 | t | 13 | t - 68 | 3 | t | 14 | f - 69 | 3 | t | 15 | f - 70 | 3 | t | 16 | f - 71 | 3 | t | 17 | f - 72 | 3 | t | 18 | f - 73 | 3 | t | 19 | f - 74 | 3 | t | 20 | f - 75 | 3 | t | 21 | f - 76 | 3 | t | 22 | f - 77 | 3 | t | 23 | f - 78 | 3 | t | 24 | f - 79 | 3 | t | 25 | f - 80 | 3 | t | 26 | f - 81 | 3 | t | 27 | - 82 | 4 | t | 1 | t - 83 | 4 | t | 2 | t - 84 | 4 | t | 3 | t - 85 | 4 | t | 4 | t - 86 | 4 | t | 5 | t - 87 | 4 | t | 6 | t - 88 | 4 | t | 7 | t - 89 | 4 | t | 8 | t - 90 | 4 | t | 9 | t - 91 | 4 | t | 10 | t - 92 | 4 | t | 11 | t - 93 | 4 | t | 12 | t - 94 | 4 | t | 13 | t - 95 | 4 | t | 14 | f - 96 | 4 | t | 15 | f - 97 | 4 | t | 16 | f - 98 | 4 | t | 17 | f - 99 | 4 | t | 18 | f - 100 | 4 | t | 19 | f - 101 | 4 | t | 20 | f - 102 | 4 | t | 21 | f - 103 | 4 | t | 22 | f - 104 | 4 | t | 23 | f - 105 | 4 | t | 24 | f - 106 | 4 | t | 25 | f - 107 | 4 | t | 26 | f - 108 | 4 | t | 27 | - 109 | 5 | t | 1 | t - 110 | 5 | t | 2 | t - 111 | 5 | t | 3 | t - 112 | 5 | t | 4 | t - 113 | 5 | t | 5 | t - 114 | 5 | t | 6 | t - 115 | 5 | t | 7 | t - 116 | 5 | t | 8 | t - 117 | 5 | t | 9 | t - 118 | 5 | t | 10 | t - 119 | 5 | t | 11 | t - 120 | 5 | t | 12 | t - 121 | 5 | t | 13 | t - 122 | 5 | t | 14 | f - 123 | 5 | t | 15 | f - 124 | 5 | t | 16 | f - 125 | 5 | t | 17 | f - 126 | 5 | t | 18 | f - 127 | 5 | t | 19 | f - 128 | 5 | t | 20 | f - 129 | 5 | t | 21 | f - 130 | 5 | t | 22 | f - 131 | 5 | t | 23 | f - 132 | 5 | t | 24 | f - 133 | 5 | t | 25 | f - 134 | 5 | t | 26 | f - 135 | 5 | t | 27 | - 136 | 6 | t | 1 | t - 137 | 6 | t | 2 | t - 138 | 6 | t | 3 | t - 139 | 6 | t | 4 | t - 140 | 6 | t | 5 | t - 141 | 6 | t | 6 | t - 142 | 6 | t | 7 | t - 143 | 6 | t | 8 | t - 144 | 6 | t | 9 | t - 145 | 6 | t | 10 | t - 146 | 6 | t | 11 | t - 147 | 6 | t | 12 | t - 148 | 6 | t | 13 | t - 149 | 6 | t | 14 | f - 150 | 6 | t | 15 | f - 151 | 6 | t | 16 | f - 152 | 6 | t | 17 | f - 153 | 6 | t | 18 | f - 154 | 6 | t | 19 | f - 155 | 6 | t | 20 | f - 156 | 6 | t | 21 | f - 157 | 6 | t | 22 | f - 158 | 6 | t | 23 | f - 159 | 6 | t | 24 | f - 160 | 6 | t | 25 | f - 161 | 6 | t | 26 | f - 162 | 6 | t | 27 | - 163 | 7 | t | 1 | t - 164 | 7 | t | 2 | t - 165 | 7 | t | 3 | t - 166 | 7 | t | 4 | t - 167 | 7 | t | 5 | t - 168 | 7 | t | 6 | t - 169 | 7 | t | 7 | t - 170 | 7 | t | 8 | t - 171 | 7 | t | 9 | t - 172 | 7 | t | 10 | t - 173 | 7 | t | 11 | t - 174 | 7 | t | 12 | t - 175 | 7 | t | 13 | t - 176 | 7 | t | 14 | f - 177 | 7 | t | 15 | f - 178 | 7 | t | 16 | f - 179 | 7 | t | 17 | f - 180 | 7 | t | 18 | f - 181 | 7 | t | 19 | f - 182 | 7 | t | 20 | f - 183 | 7 | t | 21 | f - 184 | 7 | t | 22 | f - 185 | 7 | t | 23 | f - 186 | 7 | t | 24 | f - 187 | 7 | t | 25 | f - 188 | 7 | t | 26 | f - 189 | 7 | t | 27 | - 190 | 8 | t | 1 | t - 191 | 8 | t | 2 | t - 192 | 8 | t | 3 | t - 193 | 8 | t | 4 | t - 194 | 8 | t | 5 | t - 195 | 8 | t | 6 | t - 196 | 8 | t | 7 | t - 197 | 8 | t | 8 | t - 198 | 8 | t | 9 | t - 199 | 8 | t | 10 | t - 200 | 8 | t | 11 | t - 201 | 8 | t | 12 | t - 202 | 8 | t | 13 | t - 203 | 8 | t | 14 | f - 204 | 8 | t | 15 | f - 205 | 8 | t | 16 | f - 206 | 8 | t | 17 | f - 207 | 8 | t | 18 | f - 208 | 8 | t | 19 | f - 209 | 8 | t | 20 | f - 210 | 8 | t | 21 | f - 211 | 8 | t | 22 | f - 212 | 8 | t | 23 | f - 213 | 8 | t | 24 | f - 214 | 8 | t | 25 | f - 215 | 8 | t | 26 | f - 216 | 8 | t | 27 | - 217 | 9 | t | 1 | t - 218 | 9 | t | 2 | t - 219 | 9 | t | 3 | t - 220 | 9 | t | 4 | t - 221 | 9 | t | 5 | t - 222 | 9 | t | 6 | t - 223 | 9 | t | 7 | t - 224 | 9 | t | 8 | t - 225 | 9 | t | 9 | t - 226 | 9 | t | 10 | t - 227 | 9 | t | 11 | t - 228 | 9 | t | 12 | t - 229 | 9 | t | 13 | t - 230 | 9 | t | 14 | f - 231 | 9 | t | 15 | f - 232 | 9 | t | 16 | f - 233 | 9 | t | 17 | f - 234 | 9 | t | 18 | f - 235 | 9 | t | 19 | f - 236 | 9 | t | 20 | f - 237 | 9 | t | 21 | f - 238 | 9 | t | 22 | f - 239 | 9 | t | 23 | f - 240 | 9 | t | 24 | f - 241 | 9 | t | 25 | f - 242 | 9 | t | 26 | f - 243 | 9 | t | 27 | - 244 | 10 | t | 1 | t - 245 | 10 | t | 2 | t - 246 | 10 | t | 3 | t - 247 | 10 | t | 4 | t - 248 | 10 | t | 5 | t - 249 | 10 | t | 6 | t - 250 | 10 | t | 7 | t - 251 | 10 | t | 8 | t - 252 | 10 | t | 9 | t - 253 | 10 | t | 10 | t - 254 | 10 | t | 11 | t - 255 | 10 | t | 12 | t - 256 | 10 | t | 13 | t - 257 | 10 | t | 14 | f - 258 | 10 | t | 15 | f - 259 | 10 | t | 16 | f - 260 | 10 | t | 17 | f - 261 | 10 | t | 18 | f - 262 | 10 | t | 19 | f - 263 | 10 | t | 20 | f - 264 | 10 | t | 21 | f - 265 | 10 | t | 22 | f - 266 | 10 | t | 23 | f - 267 | 10 | t | 24 | f - 268 | 10 | t | 25 | f - 269 | 10 | t | 26 | f - 270 | 10 | t | 27 | - 271 | 11 | t | 1 | t - 272 | 11 | t | 2 | t - 273 | 11 | t | 3 | t - 274 | 11 | t | 4 | t - 275 | 11 | t | 5 | t - 276 | 11 | t | 6 | t - 277 | 11 | t | 7 | t - 278 | 11 | t | 8 | t - 279 | 11 | t | 9 | t - 280 | 11 | t | 10 | t - 281 | 11 | t | 11 | t - 282 | 11 | t | 12 | t - 283 | 11 | t | 13 | t - 284 | 11 | t | 14 | f - 285 | 11 | t | 15 | f - 286 | 11 | t | 16 | f - 287 | 11 | t | 17 | f - 288 | 11 | t | 18 | f - 289 | 11 | t | 19 | f - 290 | 11 | t | 20 | f - 291 | 11 | t | 21 | f - 292 | 11 | t | 22 | f - 293 | 11 | t | 23 | f - 294 | 11 | t | 24 | f - 295 | 11 | t | 25 | f - 296 | 11 | t | 26 | f - 297 | 11 | t | 27 | - 298 | 12 | t | 1 | t - 299 | 12 | t | 2 | t - 300 | 12 | t | 3 | t - 301 | 12 | t | 4 | t - 302 | 12 | t | 5 | t - 303 | 12 | t | 6 | t - 304 | 12 | t | 7 | t - 305 | 12 | t | 8 | t - 306 | 12 | t | 9 | t - 307 | 12 | t | 10 | t - 308 | 12 | t | 11 | t - 309 | 12 | t | 12 | t - 310 | 12 | t | 13 | t - 311 | 12 | t | 14 | f - 312 | 12 | t | 15 | f - 313 | 12 | t | 16 | f - 314 | 12 | t | 17 | f - 315 | 12 | t | 18 | f - 316 | 12 | t | 19 | f - 317 | 12 | t | 20 | f - 318 | 12 | t | 21 | f - 319 | 12 | t | 22 | f - 320 | 12 | t | 23 | f - 321 | 12 | t | 24 | f - 322 | 12 | t | 25 | f - 323 | 12 | t | 26 | f - 324 | 12 | t | 27 | - 325 | 13 | t | 1 | t - 326 | 13 | t | 2 | t - 327 | 13 | t | 3 | t - 328 | 13 | t | 4 | t - 329 | 13 | t | 5 | t - 330 | 13 | t | 6 | t - 331 | 13 | t | 7 | t - 332 | 13 | t | 8 | t - 333 | 13 | t | 9 | t - 334 | 13 | t | 10 | t - 335 | 13 | t | 11 | t - 336 | 13 | t | 12 | t - 337 | 13 | t | 13 | t - 338 | 13 | t | 14 | f - 339 | 13 | t | 15 | f - 340 | 13 | t | 16 | f - 341 | 13 | t | 17 | f - 342 | 13 | t | 18 | f - 343 | 13 | t | 19 | f - 344 | 13 | t | 20 | f - 345 | 13 | t | 21 | f - 346 | 13 | t | 22 | f - 347 | 13 | t | 23 | f - 348 | 13 | t | 24 | f - 349 | 13 | t | 25 | f - 350 | 13 | t | 26 | f - 351 | 13 | t | 27 | - 352 | 14 | f | 1 | t - 353 | 14 | f | 2 | t - 354 | 14 | f | 3 | t - 355 | 14 | f | 4 | t - 356 | 14 | f | 5 | t - 357 | 14 | f | 6 | t - 358 | 14 | f | 7 | t - 359 | 14 | f | 8 | t - 360 | 14 | f | 9 | t - 361 | 14 | f | 10 | t - 362 | 14 | f | 11 | t - 363 | 14 | f | 12 | t - 364 | 14 | f | 13 | t - 365 | 14 | f | 14 | f - 366 | 14 | f | 15 | f - 367 | 14 | f | 16 | f - 368 | 14 | f | 17 | f - 369 | 14 | f | 18 | f - 370 | 14 | f | 19 | f - 371 | 14 | f | 20 | f - 372 | 14 | f | 21 | f - 373 | 14 | f | 22 | f - 374 | 14 | f | 23 | f - 375 | 14 | f | 24 | f - 376 | 14 | f | 25 | f - 377 | 14 | f | 26 | f - 378 | 14 | f | 27 | - 379 | 15 | f | 1 | t - 380 | 15 | f | 2 | t - 381 | 15 | f | 3 | t - 382 | 15 | f | 4 | t - 383 | 15 | f | 5 | t - 384 | 15 | f | 6 | t - 385 | 15 | f | 7 | t - 386 | 15 | f | 8 | t - 387 | 15 | f | 9 | t - 388 | 15 | f | 10 | t - 389 | 15 | f | 11 | t - 390 | 15 | f | 12 | t - 391 | 15 | f | 13 | t - 392 | 15 | f | 14 | f - 393 | 15 | f | 15 | f - 394 | 15 | f | 16 | f - 395 | 15 | f | 17 | f - 396 | 15 | f | 18 | f - 397 | 15 | f | 19 | f - 398 | 15 | f | 20 | f - 399 | 15 | f | 21 | f - 400 | 15 | f | 22 | f - 401 | 15 | f | 23 | f - 402 | 15 | f | 24 | f - 403 | 15 | f | 25 | f - 404 | 15 | f | 26 | f - 405 | 15 | f | 27 | - 406 | 16 | f | 1 | t - 407 | 16 | f | 2 | t - 408 | 16 | f | 3 | t - 409 | 16 | f | 4 | t - 410 | 16 | f | 5 | t - 411 | 16 | f | 6 | t - 412 | 16 | f | 7 | t - 413 | 16 | f | 8 | t - 414 | 16 | f | 9 | t - 415 | 16 | f | 10 | t - 416 | 16 | f | 11 | t - 417 | 16 | f | 12 | t - 418 | 16 | f | 13 | t - 419 | 16 | f | 14 | f - 420 | 16 | f | 15 | f - 421 | 16 | f | 16 | f - 422 | 16 | f | 17 | f - 423 | 16 | f | 18 | f - 424 | 16 | f | 19 | f - 425 | 16 | f | 20 | f - 426 | 16 | f | 21 | f - 427 | 16 | f | 22 | f - 428 | 16 | f | 23 | f - 429 | 16 | f | 24 | f - 430 | 16 | f | 25 | f - 431 | 16 | f | 26 | f - 432 | 16 | f | 27 | - 433 | 17 | f | 1 | t - 434 | 17 | f | 2 | t - 435 | 17 | f | 3 | t - 436 | 17 | f | 4 | t - 437 | 17 | f | 5 | t - 438 | 17 | f | 6 | t - 439 | 17 | f | 7 | t - 440 | 17 | f | 8 | t - 441 | 17 | f | 9 | t - 442 | 17 | f | 10 | t - 443 | 17 | f | 11 | t - 444 | 17 | f | 12 | t - 445 | 17 | f | 13 | t - 446 | 17 | f | 14 | f - 447 | 17 | f | 15 | f - 448 | 17 | f | 16 | f - 449 | 17 | f | 17 | f - 450 | 17 | f | 18 | f - 451 | 17 | f | 19 | f - 452 | 17 | f | 20 | f - 453 | 17 | f | 21 | f - 454 | 17 | f | 22 | f - 455 | 17 | f | 23 | f - 456 | 17 | f | 24 | f - 457 | 17 | f | 25 | f - 458 | 17 | f | 26 | f - 459 | 17 | f | 27 | - 460 | 18 | f | 1 | t - 461 | 18 | f | 2 | t - 462 | 18 | f | 3 | t - 463 | 18 | f | 4 | t - 464 | 18 | f | 5 | t - 465 | 18 | f | 6 | t - 466 | 18 | f | 7 | t - 467 | 18 | f | 8 | t - 468 | 18 | f | 9 | t - 469 | 18 | f | 10 | t - 470 | 18 | f | 11 | t - 471 | 18 | f | 12 | t - 472 | 18 | f | 13 | t - 473 | 18 | f | 14 | f - 474 | 18 | f | 15 | f - 475 | 18 | f | 16 | f - 476 | 18 | f | 17 | f - 477 | 18 | f | 18 | f - 478 | 18 | f | 19 | f - 479 | 18 | f | 20 | f - 480 | 18 | f | 21 | f - 481 | 18 | f | 22 | f - 482 | 18 | f | 23 | f - 483 | 18 | f | 24 | f - 484 | 18 | f | 25 | f - 485 | 18 | f | 26 | f - 486 | 18 | f | 27 | - 487 | 19 | f | 1 | t - 488 | 19 | f | 2 | t - 489 | 19 | f | 3 | t - 490 | 19 | f | 4 | t - 491 | 19 | f | 5 | t - 492 | 19 | f | 6 | t - 493 | 19 | f | 7 | t - 494 | 19 | f | 8 | t - 495 | 19 | f | 9 | t - 496 | 19 | f | 10 | t - 497 | 19 | f | 11 | t - 498 | 19 | f | 12 | t - 499 | 19 | f | 13 | t - 500 | 19 | f | 14 | f - 501 | 19 | f | 15 | f - 502 | 19 | f | 16 | f - 503 | 19 | f | 17 | f - 504 | 19 | f | 18 | f - 505 | 19 | f | 19 | f - 506 | 19 | f | 20 | f - 507 | 19 | f | 21 | f - 508 | 19 | f | 22 | f - 509 | 19 | f | 23 | f - 510 | 19 | f | 24 | f - 511 | 19 | f | 25 | f - 512 | 19 | f | 26 | f - 513 | 19 | f | 27 | - 514 | 20 | f | 1 | t - 515 | 20 | f | 2 | t - 516 | 20 | f | 3 | t - 517 | 20 | f | 4 | t - 518 | 20 | f | 5 | t - 519 | 20 | f | 6 | t - 520 | 20 | f | 7 | t - 521 | 20 | f | 8 | t - 522 | 20 | f | 9 | t - 523 | 20 | f | 10 | t - 524 | 20 | f | 11 | t - 525 | 20 | f | 12 | t - 526 | 20 | f | 13 | t - 527 | 20 | f | 14 | f - 528 | 20 | f | 15 | f - 529 | 20 | f | 16 | f - 530 | 20 | f | 17 | f - 531 | 20 | f | 18 | f - 532 | 20 | f | 19 | f - 533 | 20 | f | 20 | f - 534 | 20 | f | 21 | f - 535 | 20 | f | 22 | f - 536 | 20 | f | 23 | f - 537 | 20 | f | 24 | f - 538 | 20 | f | 25 | f - 539 | 20 | f | 26 | f - 540 | 20 | f | 27 | - 541 | 21 | f | 1 | t - 542 | 21 | f | 2 | t - 543 | 21 | f | 3 | t - 544 | 21 | f | 4 | t - 545 | 21 | f | 5 | t - 546 | 21 | f | 6 | t - 547 | 21 | f | 7 | t - 548 | 21 | f | 8 | t - 549 | 21 | f | 9 | t - 550 | 21 | f | 10 | t - 551 | 21 | f | 11 | t - 552 | 21 | f | 12 | t - 553 | 21 | f | 13 | t - 554 | 21 | f | 14 | f - 555 | 21 | f | 15 | f - 556 | 21 | f | 16 | f - 557 | 21 | f | 17 | f - 558 | 21 | f | 18 | f - 559 | 21 | f | 19 | f - 560 | 21 | f | 20 | f - 561 | 21 | f | 21 | f - 562 | 21 | f | 22 | f - 563 | 21 | f | 23 | f - 564 | 21 | f | 24 | f - 565 | 21 | f | 25 | f - 566 | 21 | f | 26 | f - 567 | 21 | f | 27 | - 568 | 22 | f | 1 | t - 569 | 22 | f | 2 | t - 570 | 22 | f | 3 | t - 571 | 22 | f | 4 | t - 572 | 22 | f | 5 | t - 573 | 22 | f | 6 | t - 574 | 22 | f | 7 | t - 575 | 22 | f | 8 | t - 576 | 22 | f | 9 | t - 577 | 22 | f | 10 | t - 578 | 22 | f | 11 | t - 579 | 22 | f | 12 | t - 580 | 22 | f | 13 | t - 581 | 22 | f | 14 | f - 582 | 22 | f | 15 | f - 583 | 22 | f | 16 | f - 584 | 22 | f | 17 | f - 585 | 22 | f | 18 | f - 586 | 22 | f | 19 | f - 587 | 22 | f | 20 | f - 588 | 22 | f | 21 | f - 589 | 22 | f | 22 | f - 590 | 22 | f | 23 | f - 591 | 22 | f | 24 | f - 592 | 22 | f | 25 | f - 593 | 22 | f | 26 | f - 594 | 22 | f | 27 | - 595 | 23 | f | 1 | t - 596 | 23 | f | 2 | t - 597 | 23 | f | 3 | t - 598 | 23 | f | 4 | t - 599 | 23 | f | 5 | t - 600 | 23 | f | 6 | t - 601 | 23 | f | 7 | t - 602 | 23 | f | 8 | t - 603 | 23 | f | 9 | t - 604 | 23 | f | 10 | t - 605 | 23 | f | 11 | t - 606 | 23 | f | 12 | t - 607 | 23 | f | 13 | t - 608 | 23 | f | 14 | f - 609 | 23 | f | 15 | f - 610 | 23 | f | 16 | f - 611 | 23 | f | 17 | f - 612 | 23 | f | 18 | f - 613 | 23 | f | 19 | f - 614 | 23 | f | 20 | f - 615 | 23 | f | 21 | f - 616 | 23 | f | 22 | f - 617 | 23 | f | 23 | f - 618 | 23 | f | 24 | f - 619 | 23 | f | 25 | f - 620 | 23 | f | 26 | f - 621 | 23 | f | 27 | - 622 | 24 | f | 1 | t - 623 | 24 | f | 2 | t - 624 | 24 | f | 3 | t - 625 | 24 | f | 4 | t - 626 | 24 | f | 5 | t - 627 | 24 | f | 6 | t - 628 | 24 | f | 7 | t - 629 | 24 | f | 8 | t - 630 | 24 | f | 9 | t - 631 | 24 | f | 10 | t - 632 | 24 | f | 11 | t - 633 | 24 | f | 12 | t - 634 | 24 | f | 13 | t - 635 | 24 | f | 14 | f - 636 | 24 | f | 15 | f - 637 | 24 | f | 16 | f - 638 | 24 | f | 17 | f - 639 | 24 | f | 18 | f - 640 | 24 | f | 19 | f - 641 | 24 | f | 20 | f - 642 | 24 | f | 21 | f - 643 | 24 | f | 22 | f - 644 | 24 | f | 23 | f - 645 | 24 | f | 24 | f - 646 | 24 | f | 25 | f - 647 | 24 | f | 26 | f - 648 | 24 | f | 27 | - 649 | 25 | f | 1 | t - 650 | 25 | f | 2 | t - 651 | 25 | f | 3 | t - 652 | 25 | f | 4 | t - 653 | 25 | f | 5 | t - 654 | 25 | f | 6 | t - 655 | 25 | f | 7 | t - 656 | 25 | f | 8 | t - 657 | 25 | f | 9 | t - 658 | 25 | f | 10 | t - 659 | 25 | f | 11 | t - 660 | 25 | f | 12 | t - 661 | 25 | f | 13 | t - 662 | 25 | f | 14 | f - 663 | 25 | f | 15 | f - 664 | 25 | f | 16 | f - 665 | 25 | f | 17 | f - 666 | 25 | f | 18 | f - 667 | 25 | f | 19 | f - 668 | 25 | f | 20 | f - 669 | 25 | f | 21 | f - 670 | 25 | f | 22 | f - 671 | 25 | f | 23 | f - 672 | 25 | f | 24 | f - 673 | 25 | f | 25 | f - 674 | 25 | f | 26 | f - 675 | 25 | f | 27 | - 676 | 26 | f | 1 | t - 677 | 26 | f | 2 | t - 678 | 26 | f | 3 | t - 679 | 26 | f | 4 | t - 680 | 26 | f | 5 | t - 681 | 26 | f | 6 | t - 682 | 26 | f | 7 | t - 683 | 26 | f | 8 | t - 684 | 26 | f | 9 | t - 685 | 26 | f | 10 | t - 686 | 26 | f | 11 | t - 687 | 26 | f | 12 | t - 688 | 26 | f | 13 | t - 689 | 26 | f | 14 | f - 690 | 26 | f | 15 | f - 691 | 26 | f | 16 | f - 692 | 26 | f | 17 | f - 693 | 26 | f | 18 | f - 694 | 26 | f | 19 | f - 695 | 26 | f | 20 | f - 696 | 26 | f | 21 | f - 697 | 26 | f | 22 | f - 698 | 26 | f | 23 | f - 699 | 26 | f | 24 | f - 700 | 26 | f | 25 | f - 701 | 26 | f | 26 | f - 702 | 26 | f | 27 | - 703 | 27 | | 1 | t - 704 | 27 | | 2 | t - 705 | 27 | | 3 | t - 706 | 27 | | 4 | t - 707 | 27 | | 5 | t - 708 | 27 | | 6 | t - 709 | 27 | | 7 | t - 710 | 27 | | 8 | t - 711 | 27 | | 9 | t - 712 | 27 | | 10 | t - 713 | 27 | | 11 | t - 714 | 27 | | 12 | t - 715 | 27 | | 13 | t - 716 | 27 | | 14 | f - 717 | 27 | | 15 | f - 718 | 27 | | 16 | f - 719 | 27 | | 17 | f - 720 | 27 | | 18 | f - 721 | 27 | | 19 | f - 722 | 27 | | 20 | f - 723 | 27 | | 21 | f - 724 | 27 | | 22 | f - 725 | 27 | | 23 | f - 726 | 27 | | 24 | f - 727 | 27 | | 25 | f - 728 | 27 | | 26 | f - 729 | 27 | | 27 | -(729 rows) - ---Testcase 60: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 61: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - b1 | b2 | a | o -----+----+---+--- - f | f | f | f - f | t | f | t - f | | f | - t | f | f | t - t | t | t | t - t | | | t - | f | f | - | t | | t - | | | -(9 rows) - ---Testcase 62: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 63: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - b1 | b2 | a | o -----+----+---+--- - t | t | t | t -(1 row) - ---Testcase 64: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 65: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - b1 | b2 | a | o -----+----+---+--- - f | t | f | t - t | f | f | t - t | t | t | t - t | | | t - | t | | t -(5 rows) - ---Testcase 66: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; - QUERY PLAN ------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) -(3 rows) - ---Testcase 67: -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; ---Testcase 68: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - t | f - t | t - t | - | f - | t - | -(6 rows) - ---Testcase 69: -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; ---Testcase 70: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) -(3 rows) - ---Testcase 71: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | t - f | - | f - | -(5 rows) - ---Testcase 72: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN_oper" - -> Foreign Delete on public."type_BOOLEAN_oper" - SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) -(3 rows) - ---Testcase 73: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; ---Testcase 74: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | - | f - | -(4 rows) - ---Testcase 75: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; ---Testcase 76: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 77: -DELETE FROM "type_BOOLEAN_oper" WHERE b2; ---Testcase 78: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 79: -DELETE FROM "type_BOOLEAN"; ---Testcase 003: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BOOLEAN" -drop cascades to foreign table "type_BOOLEAN+" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to server sqlite2 diff --git a/expected/14.12/types/macaddr.out b/expected/14.12/types/macaddr.out deleted file mode 100644 index 286573dd..00000000 --- a/expected/14.12/types/macaddr.out +++ /dev/null @@ -1,957 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); ---Testcase 012: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); ---Testcase 013: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); ---Testcase 014: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); ---Testcase 015: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); ---Testcase 016: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); ---Testcase 017: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); ---Testcase 018: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); ---Testcase 019: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); ---Testcase 020: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); ---Testcase 021: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); ---Testcase 022: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); ---Testcase 023: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); ---Testcase 024: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; ---Testcase 029: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); ---Testcase 030: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); ---Testcase 031: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); ---Testcase 032: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); ---Testcase 033: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); ---Testcase 034: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); ---Testcase 035: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); ---Testcase 036: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); ---Testcase 037: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); ---Testcase 038: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); ---Testcase 039: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); ---Testcase 040: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); ---Testcase 041: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); ---Testcase 042: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); ---Testcase 046: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); ---Testcase 047: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); ---Testcase 048: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); ---Testcase 049: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); ---Testcase 050: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); ---Testcase 051: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); ---Testcase 052: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); ---Testcase 053: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); ---Testcase 054: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); ---Testcase 055: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); ---Testcase 056: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); ---Testcase 057: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); ---Testcase 058: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); ---Testcase 062: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); ---Testcase 063: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); ---Testcase 064: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); ---Testcase 065: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); ---Testcase 066: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); ---Testcase 067: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); ---Testcase 068: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); ---Testcase 069: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); ---Testcase 070: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); ---Testcase 071: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); ---Testcase 072: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); ---Testcase 073: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); ---Testcase 074: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); ---Testcase 077: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); ---Testcase 108: -SELECT * FROM "type_MACADDR+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------+------+----+------------------- - 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; - i | m -----+------------------- - 63 | 00:00:00:00:00:01 - 64 | 00:00:00:00:00:02 - 65 | 00:00:00:00:00:03 - 66 | 00:00:01:00:00:00 - 67 | 00:00:02:00:00:00 - 68 | 00:00:03:00:00:00 - 60 | 01:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 62 | 03:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; - i | m -----+------------------- - 62 | 03:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 60 | 01:00:00:00:00:00 - 68 | 00:00:03:00:00:00 - 67 | 00:00:02:00:00:00 - 66 | 00:00:01:00:00:00 - 65 | 00:00:00:00:00:03 - 64 | 00:00:00:00:00:02 - 63 | 00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDRpk"; - col -------------------- - 01:02:03:04:05:06 - 01:02:03:04:05:06 - 01:02:03:04:05:06 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDRpk"; ---no macaddr operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m | '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m & '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m > '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m < '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m = '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m >= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <> '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR+" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to server sqlite2 diff --git a/expected/14.12/types/macaddr8.out b/expected/14.12/types/macaddr8.out deleted file mode 100644 index e367ee36..00000000 --- a/expected/14.12/types/macaddr8.out +++ /dev/null @@ -1,958 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); ---Testcase 012: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); ---Testcase 013: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); ---Testcase 014: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); ---Testcase 015: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); ---Testcase 016: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); ---Testcase 017: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); ---Testcase 018: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); ---Testcase 019: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); ---Testcase 020: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); ---Testcase 021: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); ---Testcase 022: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); ---Testcase 023: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); ---Testcase 024: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; ---Testcase 029: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); ---Testcase 030: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); ---Testcase 031: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); ---Testcase 032: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); ---Testcase 033: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); ---Testcase 034: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); ---Testcase 035: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); ---Testcase 036: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); ---Testcase 037: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); ---Testcase 038: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); ---Testcase 039: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); ---Testcase 040: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); ---Testcase 041: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); ---Testcase 042: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); ---Testcase 046: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); ---Testcase 047: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); ---Testcase 048: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); ---Testcase 049: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); ---Testcase 050: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); ---Testcase 051: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); ---Testcase 052: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); ---Testcase 053: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); ---Testcase 054: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); ---Testcase 055: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); ---Testcase 056: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); ---Testcase 057: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); ---Testcase 058: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); ---Testcase 062: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); ---Testcase 063: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); ---Testcase 064: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); ---Testcase 065: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); ---Testcase 066: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); ---Testcase 067: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); ---Testcase 068: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); ---Testcase 069: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); ---Testcase 070: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); ---Testcase 071: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); ---Testcase 072: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); ---Testcase 073: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); ---Testcase 074: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); ---Testcase 077: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); ---Testcase 108: -SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------------+------+----+------------------------- - 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR8"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; - i | m -----+------------------------- - 63 | 00:00:00:00:00:00:00:01 - 64 | 00:00:00:00:00:00:00:02 - 65 | 00:00:00:00:00:00:00:03 - 66 | 00:00:00:00:01:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 62 | 03:00:00:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; - i | m -----+------------------------- - 62 | 03:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 66 | 00:00:00:00:01:00:00:00 - 65 | 00:00:00:00:00:00:00:03 - 64 | 00:00:00:00:00:00:00:02 - 63 | 00:00:00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); -ERROR: option "column_type" provided more than once ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDR8pk"; - col -------------------------- - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDR8pk"; ---no macaddr8 operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "type_MACADDR8+" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to server sqlite2 diff --git a/expected/14.12/types/uuid.out b/expected/14.12/types/uuid.out deleted file mode 100644 index 35a2d86c..00000000 --- a/expected/14.12/types/uuid.out +++ /dev/null @@ -1,551 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); ---Testcase 010: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; ---Testcase 011: -INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 012: -INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 013: -INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 014: -INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 015: -INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 016: -INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 017: -INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 018: -INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 019: -INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 020: -INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 021: -INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 022: -INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 023: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 024: -INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 025: -INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 026: -INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 027: -INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 029: -INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 030: -INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 031: -INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 032: -INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 033: -INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 034: -INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 035: -INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 036: -INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 037: -INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 038: -INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 039: -INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 040: -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 041: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 042: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); ---Testcase 043: -INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 044: -INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 045: -INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 046: -INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 047: -INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 048: -INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 049: -INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 050: -INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 051: -INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 052: -INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 053: -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 054: -INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 055: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 056: -CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); ---Testcase 057: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(40 rows) - ---Testcase 058: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 059: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 060: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 061: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 062: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 063: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 064: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 065: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 066: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 067: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; ---Testcase 068: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) -(3 rows) - ---Testcase 069: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 070: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) -(3 rows) - ---Testcase 071: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 072: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; ---Testcase 073: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) -(3 rows) - ---Testcase 074: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(21 rows) - ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; ---Testcase 076: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 -(1 row) - ---Testcase 077: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; ---Testcase 076: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 077: -SELECT * FROM "type_UUID+"; - i | u | t | l ----+---+---+--- -(0 rows) - ---Testcase 078: -INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); ---Testcase 079: -SELECT * FROM "type_UUID+" WHERE "i" = 41; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 -(1 row) - ---Testcase 080: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; ---Testcase 081: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 082: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 083: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 084: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) -(3 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 086: -INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); ---Testcase 087: -INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); ---Testcase 088: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 089: -SELECT * FROM "type_UUID+" WHERE "i" = 42; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 090: -SELECT * FROM "type_UUID+" WHERE "i" = 43; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 091: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); - QUERY PLAN ----------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) -(3 rows) - ---Testcase 092: -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); ---Testcase 093: -INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); ---Testcase 094: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 - 44 | | null | -(2 rows) - ---Testcase 095: -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - i | u | t | l -----+---+------+--- - 44 | | null | -(1 row) - ---Testcase 096: -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) -(3 rows) - ---Testcase 098: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) -(3 rows) - ---Testcase 100: -CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 101: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); ---Testcase 102: -INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 103: -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 104: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(2 rows) - ---Testcase 105: ERR - primary key -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) ---Testcase 106: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 107: NO ERR, but the same semantics! -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 108: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(3 rows) - ---Testcase 109: -DELETE FROM "type_UUIDpk"; ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_UUID+" -drop cascades to foreign table "type_UUIDpk" -drop cascades to server sqlite2 diff --git a/expected/15.7/extra/bitstring.out b/expected/15.7/extra/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/15.7/extra/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/15.7/types/bitstring.out b/expected/15.7/types/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/15.7/types/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/15.7/types/bool.out b/expected/15.7/types/bool.out deleted file mode 100644 index 814110a1..00000000 --- a/expected/15.7/types/bool.out +++ /dev/null @@ -1,1276 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 000: -CREATE EXTENSION sqlite_fdw; ---Testcase 001: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 01: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; ---Testcase 02: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); ---Testcase 03: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); ---Testcase 04: -CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); ---Testcase 05: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; ---Testcase 06: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); ---Testcase 07: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); ---Testcase 08: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); ---Testcase 09: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); ---Testcase 10: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); ---Testcase 11: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); ---Testcase 12: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); ---Testcase 13: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); ---Testcase 14: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); ---Testcase 15: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); ---Testcase 16: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); ---Testcase 17: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); ---Testcase 18: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); ---Testcase 19: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); ---Testcase 20: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); ---Testcase 21: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); ---Testcase 22: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); ---Testcase 23: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); ---Testcase 24: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); ---Testcase 25: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); ---Testcase 26: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); ---Testcase 27: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); ---Testcase 28: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); ---Testcase 29: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); ---Testcase 30: -SELECT * FROM "type_BOOLEAN"; - i | b -----+------- - 1 | 1 - 2 | 0 - 3 | true - 4 | false - 5 | true - 6 | false - 7 | Yes - 8 | YeS - 9 | yes - 10 | no - 11 | No - 12 | nO - 13 | off - 14 | oFf - 15 | on - 16 | ON - 17 | t - 18 | T - 19 | Y - 20 | y - 21 | F - 22 | f - 23 | x - 24 | 0 - 25 | 1 - 26 | -(26 rows) - ---Testcase 31: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 32: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN"; - QUERY PLAN ---------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN" - Output: i, b - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" -(3 rows) - ---Testcase 33: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN+"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" - Output: i, b, t, l - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 34: ERR - invalid text affinity because not ISO:SQL text input -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "text" affinity (1 bytes) : 'x' -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 35 -DELETE FROM "type_BOOLEAN" WHERE i = 23; ---Testcase 36: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 37: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; - i | b | t | l -----+---+------+--- - 26 | | null | -(1 row) - ---Testcase 38: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 -(24 rows) - ---Testcase 39: -SELECT * FROM "type_BOOLEAN+" WHERE b; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 3 | t | text | 4 - 5 | t | text | 4 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 25 | t | integer | 1 -(13 rows) - ---Testcase 40: -SELECT * FROM "type_BOOLEAN+" WHERE NOT b; - i | b | t | l -----+---+---------+--- - 2 | f | integer | 1 - 4 | f | text | 5 - 6 | f | text | 5 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 -(11 rows) - ---Testcase 41: -CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 42: -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ---Testcase 43: -INSERT INTO "type_BOOLEANpk" VALUES (FALSE); ---Testcase 44: ERR - primary key -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) ---Testcase 45: -DELETE FROM "type_BOOLEANpk"; ---Testcase 46: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; ---Testcase 47: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); ---Testcase 48: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 49: ERR - invalid float for bool column -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "real" affinity : 3.14159265358979 -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 50 -DELETE FROM "type_BOOLEAN" WHERE i = 27; ---Testcase 51: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 52: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE b; - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 53: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; - QUERY PLAN ----------------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 54: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE b; - QUERY PLAN ------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 55: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE NOT b; - QUERY PLAN ------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 56: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" b - Output: i, b, t, l, (NOT b) - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 57: -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - i | b | t | l | nb -----+---+---------+---+---- - 1 | t | integer | 1 | f - 2 | f | integer | 1 | t - 3 | t | text | 4 | f - 4 | f | text | 5 | t - 5 | t | text | 4 | f - 6 | f | text | 5 | t - 7 | t | text | 3 | f - 8 | t | text | 3 | f - 9 | t | text | 3 | f - 10 | f | text | 2 | t - 11 | f | text | 2 | t - 12 | f | text | 2 | t - 13 | f | text | 3 | t - 14 | f | text | 3 | t - 15 | t | text | 2 | f - 16 | t | text | 2 | f - 17 | t | text | 1 | f - 18 | t | text | 1 | f - 19 | t | text | 1 | f - 20 | t | text | 1 | f - 21 | f | text | 1 | t - 22 | f | text | 1 | t - 24 | f | integer | 1 | t - 25 | t | integer | 1 | f - 26 | | null | | -(25 rows) - ---Testcase 58: -CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); ---Testcase 59: see INIT.SQL with mixed affinity boolean data -SELECT * FROM "type_BOOLEAN_oper"; - i | i1 | b1 | i2 | b2 ------+----+----+----+---- - 1 | 1 | t | 1 | t - 2 | 1 | t | 2 | t - 3 | 1 | t | 3 | t - 4 | 1 | t | 4 | t - 5 | 1 | t | 5 | t - 6 | 1 | t | 6 | t - 7 | 1 | t | 7 | t - 8 | 1 | t | 8 | t - 9 | 1 | t | 9 | t - 10 | 1 | t | 10 | t - 11 | 1 | t | 11 | t - 12 | 1 | t | 12 | t - 13 | 1 | t | 13 | t - 14 | 1 | t | 14 | f - 15 | 1 | t | 15 | f - 16 | 1 | t | 16 | f - 17 | 1 | t | 17 | f - 18 | 1 | t | 18 | f - 19 | 1 | t | 19 | f - 20 | 1 | t | 20 | f - 21 | 1 | t | 21 | f - 22 | 1 | t | 22 | f - 23 | 1 | t | 23 | f - 24 | 1 | t | 24 | f - 25 | 1 | t | 25 | f - 26 | 1 | t | 26 | f - 27 | 1 | t | 27 | - 28 | 2 | t | 1 | t - 29 | 2 | t | 2 | t - 30 | 2 | t | 3 | t - 31 | 2 | t | 4 | t - 32 | 2 | t | 5 | t - 33 | 2 | t | 6 | t - 34 | 2 | t | 7 | t - 35 | 2 | t | 8 | t - 36 | 2 | t | 9 | t - 37 | 2 | t | 10 | t - 38 | 2 | t | 11 | t - 39 | 2 | t | 12 | t - 40 | 2 | t | 13 | t - 41 | 2 | t | 14 | f - 42 | 2 | t | 15 | f - 43 | 2 | t | 16 | f - 44 | 2 | t | 17 | f - 45 | 2 | t | 18 | f - 46 | 2 | t | 19 | f - 47 | 2 | t | 20 | f - 48 | 2 | t | 21 | f - 49 | 2 | t | 22 | f - 50 | 2 | t | 23 | f - 51 | 2 | t | 24 | f - 52 | 2 | t | 25 | f - 53 | 2 | t | 26 | f - 54 | 2 | t | 27 | - 55 | 3 | t | 1 | t - 56 | 3 | t | 2 | t - 57 | 3 | t | 3 | t - 58 | 3 | t | 4 | t - 59 | 3 | t | 5 | t - 60 | 3 | t | 6 | t - 61 | 3 | t | 7 | t - 62 | 3 | t | 8 | t - 63 | 3 | t | 9 | t - 64 | 3 | t | 10 | t - 65 | 3 | t | 11 | t - 66 | 3 | t | 12 | t - 67 | 3 | t | 13 | t - 68 | 3 | t | 14 | f - 69 | 3 | t | 15 | f - 70 | 3 | t | 16 | f - 71 | 3 | t | 17 | f - 72 | 3 | t | 18 | f - 73 | 3 | t | 19 | f - 74 | 3 | t | 20 | f - 75 | 3 | t | 21 | f - 76 | 3 | t | 22 | f - 77 | 3 | t | 23 | f - 78 | 3 | t | 24 | f - 79 | 3 | t | 25 | f - 80 | 3 | t | 26 | f - 81 | 3 | t | 27 | - 82 | 4 | t | 1 | t - 83 | 4 | t | 2 | t - 84 | 4 | t | 3 | t - 85 | 4 | t | 4 | t - 86 | 4 | t | 5 | t - 87 | 4 | t | 6 | t - 88 | 4 | t | 7 | t - 89 | 4 | t | 8 | t - 90 | 4 | t | 9 | t - 91 | 4 | t | 10 | t - 92 | 4 | t | 11 | t - 93 | 4 | t | 12 | t - 94 | 4 | t | 13 | t - 95 | 4 | t | 14 | f - 96 | 4 | t | 15 | f - 97 | 4 | t | 16 | f - 98 | 4 | t | 17 | f - 99 | 4 | t | 18 | f - 100 | 4 | t | 19 | f - 101 | 4 | t | 20 | f - 102 | 4 | t | 21 | f - 103 | 4 | t | 22 | f - 104 | 4 | t | 23 | f - 105 | 4 | t | 24 | f - 106 | 4 | t | 25 | f - 107 | 4 | t | 26 | f - 108 | 4 | t | 27 | - 109 | 5 | t | 1 | t - 110 | 5 | t | 2 | t - 111 | 5 | t | 3 | t - 112 | 5 | t | 4 | t - 113 | 5 | t | 5 | t - 114 | 5 | t | 6 | t - 115 | 5 | t | 7 | t - 116 | 5 | t | 8 | t - 117 | 5 | t | 9 | t - 118 | 5 | t | 10 | t - 119 | 5 | t | 11 | t - 120 | 5 | t | 12 | t - 121 | 5 | t | 13 | t - 122 | 5 | t | 14 | f - 123 | 5 | t | 15 | f - 124 | 5 | t | 16 | f - 125 | 5 | t | 17 | f - 126 | 5 | t | 18 | f - 127 | 5 | t | 19 | f - 128 | 5 | t | 20 | f - 129 | 5 | t | 21 | f - 130 | 5 | t | 22 | f - 131 | 5 | t | 23 | f - 132 | 5 | t | 24 | f - 133 | 5 | t | 25 | f - 134 | 5 | t | 26 | f - 135 | 5 | t | 27 | - 136 | 6 | t | 1 | t - 137 | 6 | t | 2 | t - 138 | 6 | t | 3 | t - 139 | 6 | t | 4 | t - 140 | 6 | t | 5 | t - 141 | 6 | t | 6 | t - 142 | 6 | t | 7 | t - 143 | 6 | t | 8 | t - 144 | 6 | t | 9 | t - 145 | 6 | t | 10 | t - 146 | 6 | t | 11 | t - 147 | 6 | t | 12 | t - 148 | 6 | t | 13 | t - 149 | 6 | t | 14 | f - 150 | 6 | t | 15 | f - 151 | 6 | t | 16 | f - 152 | 6 | t | 17 | f - 153 | 6 | t | 18 | f - 154 | 6 | t | 19 | f - 155 | 6 | t | 20 | f - 156 | 6 | t | 21 | f - 157 | 6 | t | 22 | f - 158 | 6 | t | 23 | f - 159 | 6 | t | 24 | f - 160 | 6 | t | 25 | f - 161 | 6 | t | 26 | f - 162 | 6 | t | 27 | - 163 | 7 | t | 1 | t - 164 | 7 | t | 2 | t - 165 | 7 | t | 3 | t - 166 | 7 | t | 4 | t - 167 | 7 | t | 5 | t - 168 | 7 | t | 6 | t - 169 | 7 | t | 7 | t - 170 | 7 | t | 8 | t - 171 | 7 | t | 9 | t - 172 | 7 | t | 10 | t - 173 | 7 | t | 11 | t - 174 | 7 | t | 12 | t - 175 | 7 | t | 13 | t - 176 | 7 | t | 14 | f - 177 | 7 | t | 15 | f - 178 | 7 | t | 16 | f - 179 | 7 | t | 17 | f - 180 | 7 | t | 18 | f - 181 | 7 | t | 19 | f - 182 | 7 | t | 20 | f - 183 | 7 | t | 21 | f - 184 | 7 | t | 22 | f - 185 | 7 | t | 23 | f - 186 | 7 | t | 24 | f - 187 | 7 | t | 25 | f - 188 | 7 | t | 26 | f - 189 | 7 | t | 27 | - 190 | 8 | t | 1 | t - 191 | 8 | t | 2 | t - 192 | 8 | t | 3 | t - 193 | 8 | t | 4 | t - 194 | 8 | t | 5 | t - 195 | 8 | t | 6 | t - 196 | 8 | t | 7 | t - 197 | 8 | t | 8 | t - 198 | 8 | t | 9 | t - 199 | 8 | t | 10 | t - 200 | 8 | t | 11 | t - 201 | 8 | t | 12 | t - 202 | 8 | t | 13 | t - 203 | 8 | t | 14 | f - 204 | 8 | t | 15 | f - 205 | 8 | t | 16 | f - 206 | 8 | t | 17 | f - 207 | 8 | t | 18 | f - 208 | 8 | t | 19 | f - 209 | 8 | t | 20 | f - 210 | 8 | t | 21 | f - 211 | 8 | t | 22 | f - 212 | 8 | t | 23 | f - 213 | 8 | t | 24 | f - 214 | 8 | t | 25 | f - 215 | 8 | t | 26 | f - 216 | 8 | t | 27 | - 217 | 9 | t | 1 | t - 218 | 9 | t | 2 | t - 219 | 9 | t | 3 | t - 220 | 9 | t | 4 | t - 221 | 9 | t | 5 | t - 222 | 9 | t | 6 | t - 223 | 9 | t | 7 | t - 224 | 9 | t | 8 | t - 225 | 9 | t | 9 | t - 226 | 9 | t | 10 | t - 227 | 9 | t | 11 | t - 228 | 9 | t | 12 | t - 229 | 9 | t | 13 | t - 230 | 9 | t | 14 | f - 231 | 9 | t | 15 | f - 232 | 9 | t | 16 | f - 233 | 9 | t | 17 | f - 234 | 9 | t | 18 | f - 235 | 9 | t | 19 | f - 236 | 9 | t | 20 | f - 237 | 9 | t | 21 | f - 238 | 9 | t | 22 | f - 239 | 9 | t | 23 | f - 240 | 9 | t | 24 | f - 241 | 9 | t | 25 | f - 242 | 9 | t | 26 | f - 243 | 9 | t | 27 | - 244 | 10 | t | 1 | t - 245 | 10 | t | 2 | t - 246 | 10 | t | 3 | t - 247 | 10 | t | 4 | t - 248 | 10 | t | 5 | t - 249 | 10 | t | 6 | t - 250 | 10 | t | 7 | t - 251 | 10 | t | 8 | t - 252 | 10 | t | 9 | t - 253 | 10 | t | 10 | t - 254 | 10 | t | 11 | t - 255 | 10 | t | 12 | t - 256 | 10 | t | 13 | t - 257 | 10 | t | 14 | f - 258 | 10 | t | 15 | f - 259 | 10 | t | 16 | f - 260 | 10 | t | 17 | f - 261 | 10 | t | 18 | f - 262 | 10 | t | 19 | f - 263 | 10 | t | 20 | f - 264 | 10 | t | 21 | f - 265 | 10 | t | 22 | f - 266 | 10 | t | 23 | f - 267 | 10 | t | 24 | f - 268 | 10 | t | 25 | f - 269 | 10 | t | 26 | f - 270 | 10 | t | 27 | - 271 | 11 | t | 1 | t - 272 | 11 | t | 2 | t - 273 | 11 | t | 3 | t - 274 | 11 | t | 4 | t - 275 | 11 | t | 5 | t - 276 | 11 | t | 6 | t - 277 | 11 | t | 7 | t - 278 | 11 | t | 8 | t - 279 | 11 | t | 9 | t - 280 | 11 | t | 10 | t - 281 | 11 | t | 11 | t - 282 | 11 | t | 12 | t - 283 | 11 | t | 13 | t - 284 | 11 | t | 14 | f - 285 | 11 | t | 15 | f - 286 | 11 | t | 16 | f - 287 | 11 | t | 17 | f - 288 | 11 | t | 18 | f - 289 | 11 | t | 19 | f - 290 | 11 | t | 20 | f - 291 | 11 | t | 21 | f - 292 | 11 | t | 22 | f - 293 | 11 | t | 23 | f - 294 | 11 | t | 24 | f - 295 | 11 | t | 25 | f - 296 | 11 | t | 26 | f - 297 | 11 | t | 27 | - 298 | 12 | t | 1 | t - 299 | 12 | t | 2 | t - 300 | 12 | t | 3 | t - 301 | 12 | t | 4 | t - 302 | 12 | t | 5 | t - 303 | 12 | t | 6 | t - 304 | 12 | t | 7 | t - 305 | 12 | t | 8 | t - 306 | 12 | t | 9 | t - 307 | 12 | t | 10 | t - 308 | 12 | t | 11 | t - 309 | 12 | t | 12 | t - 310 | 12 | t | 13 | t - 311 | 12 | t | 14 | f - 312 | 12 | t | 15 | f - 313 | 12 | t | 16 | f - 314 | 12 | t | 17 | f - 315 | 12 | t | 18 | f - 316 | 12 | t | 19 | f - 317 | 12 | t | 20 | f - 318 | 12 | t | 21 | f - 319 | 12 | t | 22 | f - 320 | 12 | t | 23 | f - 321 | 12 | t | 24 | f - 322 | 12 | t | 25 | f - 323 | 12 | t | 26 | f - 324 | 12 | t | 27 | - 325 | 13 | t | 1 | t - 326 | 13 | t | 2 | t - 327 | 13 | t | 3 | t - 328 | 13 | t | 4 | t - 329 | 13 | t | 5 | t - 330 | 13 | t | 6 | t - 331 | 13 | t | 7 | t - 332 | 13 | t | 8 | t - 333 | 13 | t | 9 | t - 334 | 13 | t | 10 | t - 335 | 13 | t | 11 | t - 336 | 13 | t | 12 | t - 337 | 13 | t | 13 | t - 338 | 13 | t | 14 | f - 339 | 13 | t | 15 | f - 340 | 13 | t | 16 | f - 341 | 13 | t | 17 | f - 342 | 13 | t | 18 | f - 343 | 13 | t | 19 | f - 344 | 13 | t | 20 | f - 345 | 13 | t | 21 | f - 346 | 13 | t | 22 | f - 347 | 13 | t | 23 | f - 348 | 13 | t | 24 | f - 349 | 13 | t | 25 | f - 350 | 13 | t | 26 | f - 351 | 13 | t | 27 | - 352 | 14 | f | 1 | t - 353 | 14 | f | 2 | t - 354 | 14 | f | 3 | t - 355 | 14 | f | 4 | t - 356 | 14 | f | 5 | t - 357 | 14 | f | 6 | t - 358 | 14 | f | 7 | t - 359 | 14 | f | 8 | t - 360 | 14 | f | 9 | t - 361 | 14 | f | 10 | t - 362 | 14 | f | 11 | t - 363 | 14 | f | 12 | t - 364 | 14 | f | 13 | t - 365 | 14 | f | 14 | f - 366 | 14 | f | 15 | f - 367 | 14 | f | 16 | f - 368 | 14 | f | 17 | f - 369 | 14 | f | 18 | f - 370 | 14 | f | 19 | f - 371 | 14 | f | 20 | f - 372 | 14 | f | 21 | f - 373 | 14 | f | 22 | f - 374 | 14 | f | 23 | f - 375 | 14 | f | 24 | f - 376 | 14 | f | 25 | f - 377 | 14 | f | 26 | f - 378 | 14 | f | 27 | - 379 | 15 | f | 1 | t - 380 | 15 | f | 2 | t - 381 | 15 | f | 3 | t - 382 | 15 | f | 4 | t - 383 | 15 | f | 5 | t - 384 | 15 | f | 6 | t - 385 | 15 | f | 7 | t - 386 | 15 | f | 8 | t - 387 | 15 | f | 9 | t - 388 | 15 | f | 10 | t - 389 | 15 | f | 11 | t - 390 | 15 | f | 12 | t - 391 | 15 | f | 13 | t - 392 | 15 | f | 14 | f - 393 | 15 | f | 15 | f - 394 | 15 | f | 16 | f - 395 | 15 | f | 17 | f - 396 | 15 | f | 18 | f - 397 | 15 | f | 19 | f - 398 | 15 | f | 20 | f - 399 | 15 | f | 21 | f - 400 | 15 | f | 22 | f - 401 | 15 | f | 23 | f - 402 | 15 | f | 24 | f - 403 | 15 | f | 25 | f - 404 | 15 | f | 26 | f - 405 | 15 | f | 27 | - 406 | 16 | f | 1 | t - 407 | 16 | f | 2 | t - 408 | 16 | f | 3 | t - 409 | 16 | f | 4 | t - 410 | 16 | f | 5 | t - 411 | 16 | f | 6 | t - 412 | 16 | f | 7 | t - 413 | 16 | f | 8 | t - 414 | 16 | f | 9 | t - 415 | 16 | f | 10 | t - 416 | 16 | f | 11 | t - 417 | 16 | f | 12 | t - 418 | 16 | f | 13 | t - 419 | 16 | f | 14 | f - 420 | 16 | f | 15 | f - 421 | 16 | f | 16 | f - 422 | 16 | f | 17 | f - 423 | 16 | f | 18 | f - 424 | 16 | f | 19 | f - 425 | 16 | f | 20 | f - 426 | 16 | f | 21 | f - 427 | 16 | f | 22 | f - 428 | 16 | f | 23 | f - 429 | 16 | f | 24 | f - 430 | 16 | f | 25 | f - 431 | 16 | f | 26 | f - 432 | 16 | f | 27 | - 433 | 17 | f | 1 | t - 434 | 17 | f | 2 | t - 435 | 17 | f | 3 | t - 436 | 17 | f | 4 | t - 437 | 17 | f | 5 | t - 438 | 17 | f | 6 | t - 439 | 17 | f | 7 | t - 440 | 17 | f | 8 | t - 441 | 17 | f | 9 | t - 442 | 17 | f | 10 | t - 443 | 17 | f | 11 | t - 444 | 17 | f | 12 | t - 445 | 17 | f | 13 | t - 446 | 17 | f | 14 | f - 447 | 17 | f | 15 | f - 448 | 17 | f | 16 | f - 449 | 17 | f | 17 | f - 450 | 17 | f | 18 | f - 451 | 17 | f | 19 | f - 452 | 17 | f | 20 | f - 453 | 17 | f | 21 | f - 454 | 17 | f | 22 | f - 455 | 17 | f | 23 | f - 456 | 17 | f | 24 | f - 457 | 17 | f | 25 | f - 458 | 17 | f | 26 | f - 459 | 17 | f | 27 | - 460 | 18 | f | 1 | t - 461 | 18 | f | 2 | t - 462 | 18 | f | 3 | t - 463 | 18 | f | 4 | t - 464 | 18 | f | 5 | t - 465 | 18 | f | 6 | t - 466 | 18 | f | 7 | t - 467 | 18 | f | 8 | t - 468 | 18 | f | 9 | t - 469 | 18 | f | 10 | t - 470 | 18 | f | 11 | t - 471 | 18 | f | 12 | t - 472 | 18 | f | 13 | t - 473 | 18 | f | 14 | f - 474 | 18 | f | 15 | f - 475 | 18 | f | 16 | f - 476 | 18 | f | 17 | f - 477 | 18 | f | 18 | f - 478 | 18 | f | 19 | f - 479 | 18 | f | 20 | f - 480 | 18 | f | 21 | f - 481 | 18 | f | 22 | f - 482 | 18 | f | 23 | f - 483 | 18 | f | 24 | f - 484 | 18 | f | 25 | f - 485 | 18 | f | 26 | f - 486 | 18 | f | 27 | - 487 | 19 | f | 1 | t - 488 | 19 | f | 2 | t - 489 | 19 | f | 3 | t - 490 | 19 | f | 4 | t - 491 | 19 | f | 5 | t - 492 | 19 | f | 6 | t - 493 | 19 | f | 7 | t - 494 | 19 | f | 8 | t - 495 | 19 | f | 9 | t - 496 | 19 | f | 10 | t - 497 | 19 | f | 11 | t - 498 | 19 | f | 12 | t - 499 | 19 | f | 13 | t - 500 | 19 | f | 14 | f - 501 | 19 | f | 15 | f - 502 | 19 | f | 16 | f - 503 | 19 | f | 17 | f - 504 | 19 | f | 18 | f - 505 | 19 | f | 19 | f - 506 | 19 | f | 20 | f - 507 | 19 | f | 21 | f - 508 | 19 | f | 22 | f - 509 | 19 | f | 23 | f - 510 | 19 | f | 24 | f - 511 | 19 | f | 25 | f - 512 | 19 | f | 26 | f - 513 | 19 | f | 27 | - 514 | 20 | f | 1 | t - 515 | 20 | f | 2 | t - 516 | 20 | f | 3 | t - 517 | 20 | f | 4 | t - 518 | 20 | f | 5 | t - 519 | 20 | f | 6 | t - 520 | 20 | f | 7 | t - 521 | 20 | f | 8 | t - 522 | 20 | f | 9 | t - 523 | 20 | f | 10 | t - 524 | 20 | f | 11 | t - 525 | 20 | f | 12 | t - 526 | 20 | f | 13 | t - 527 | 20 | f | 14 | f - 528 | 20 | f | 15 | f - 529 | 20 | f | 16 | f - 530 | 20 | f | 17 | f - 531 | 20 | f | 18 | f - 532 | 20 | f | 19 | f - 533 | 20 | f | 20 | f - 534 | 20 | f | 21 | f - 535 | 20 | f | 22 | f - 536 | 20 | f | 23 | f - 537 | 20 | f | 24 | f - 538 | 20 | f | 25 | f - 539 | 20 | f | 26 | f - 540 | 20 | f | 27 | - 541 | 21 | f | 1 | t - 542 | 21 | f | 2 | t - 543 | 21 | f | 3 | t - 544 | 21 | f | 4 | t - 545 | 21 | f | 5 | t - 546 | 21 | f | 6 | t - 547 | 21 | f | 7 | t - 548 | 21 | f | 8 | t - 549 | 21 | f | 9 | t - 550 | 21 | f | 10 | t - 551 | 21 | f | 11 | t - 552 | 21 | f | 12 | t - 553 | 21 | f | 13 | t - 554 | 21 | f | 14 | f - 555 | 21 | f | 15 | f - 556 | 21 | f | 16 | f - 557 | 21 | f | 17 | f - 558 | 21 | f | 18 | f - 559 | 21 | f | 19 | f - 560 | 21 | f | 20 | f - 561 | 21 | f | 21 | f - 562 | 21 | f | 22 | f - 563 | 21 | f | 23 | f - 564 | 21 | f | 24 | f - 565 | 21 | f | 25 | f - 566 | 21 | f | 26 | f - 567 | 21 | f | 27 | - 568 | 22 | f | 1 | t - 569 | 22 | f | 2 | t - 570 | 22 | f | 3 | t - 571 | 22 | f | 4 | t - 572 | 22 | f | 5 | t - 573 | 22 | f | 6 | t - 574 | 22 | f | 7 | t - 575 | 22 | f | 8 | t - 576 | 22 | f | 9 | t - 577 | 22 | f | 10 | t - 578 | 22 | f | 11 | t - 579 | 22 | f | 12 | t - 580 | 22 | f | 13 | t - 581 | 22 | f | 14 | f - 582 | 22 | f | 15 | f - 583 | 22 | f | 16 | f - 584 | 22 | f | 17 | f - 585 | 22 | f | 18 | f - 586 | 22 | f | 19 | f - 587 | 22 | f | 20 | f - 588 | 22 | f | 21 | f - 589 | 22 | f | 22 | f - 590 | 22 | f | 23 | f - 591 | 22 | f | 24 | f - 592 | 22 | f | 25 | f - 593 | 22 | f | 26 | f - 594 | 22 | f | 27 | - 595 | 23 | f | 1 | t - 596 | 23 | f | 2 | t - 597 | 23 | f | 3 | t - 598 | 23 | f | 4 | t - 599 | 23 | f | 5 | t - 600 | 23 | f | 6 | t - 601 | 23 | f | 7 | t - 602 | 23 | f | 8 | t - 603 | 23 | f | 9 | t - 604 | 23 | f | 10 | t - 605 | 23 | f | 11 | t - 606 | 23 | f | 12 | t - 607 | 23 | f | 13 | t - 608 | 23 | f | 14 | f - 609 | 23 | f | 15 | f - 610 | 23 | f | 16 | f - 611 | 23 | f | 17 | f - 612 | 23 | f | 18 | f - 613 | 23 | f | 19 | f - 614 | 23 | f | 20 | f - 615 | 23 | f | 21 | f - 616 | 23 | f | 22 | f - 617 | 23 | f | 23 | f - 618 | 23 | f | 24 | f - 619 | 23 | f | 25 | f - 620 | 23 | f | 26 | f - 621 | 23 | f | 27 | - 622 | 24 | f | 1 | t - 623 | 24 | f | 2 | t - 624 | 24 | f | 3 | t - 625 | 24 | f | 4 | t - 626 | 24 | f | 5 | t - 627 | 24 | f | 6 | t - 628 | 24 | f | 7 | t - 629 | 24 | f | 8 | t - 630 | 24 | f | 9 | t - 631 | 24 | f | 10 | t - 632 | 24 | f | 11 | t - 633 | 24 | f | 12 | t - 634 | 24 | f | 13 | t - 635 | 24 | f | 14 | f - 636 | 24 | f | 15 | f - 637 | 24 | f | 16 | f - 638 | 24 | f | 17 | f - 639 | 24 | f | 18 | f - 640 | 24 | f | 19 | f - 641 | 24 | f | 20 | f - 642 | 24 | f | 21 | f - 643 | 24 | f | 22 | f - 644 | 24 | f | 23 | f - 645 | 24 | f | 24 | f - 646 | 24 | f | 25 | f - 647 | 24 | f | 26 | f - 648 | 24 | f | 27 | - 649 | 25 | f | 1 | t - 650 | 25 | f | 2 | t - 651 | 25 | f | 3 | t - 652 | 25 | f | 4 | t - 653 | 25 | f | 5 | t - 654 | 25 | f | 6 | t - 655 | 25 | f | 7 | t - 656 | 25 | f | 8 | t - 657 | 25 | f | 9 | t - 658 | 25 | f | 10 | t - 659 | 25 | f | 11 | t - 660 | 25 | f | 12 | t - 661 | 25 | f | 13 | t - 662 | 25 | f | 14 | f - 663 | 25 | f | 15 | f - 664 | 25 | f | 16 | f - 665 | 25 | f | 17 | f - 666 | 25 | f | 18 | f - 667 | 25 | f | 19 | f - 668 | 25 | f | 20 | f - 669 | 25 | f | 21 | f - 670 | 25 | f | 22 | f - 671 | 25 | f | 23 | f - 672 | 25 | f | 24 | f - 673 | 25 | f | 25 | f - 674 | 25 | f | 26 | f - 675 | 25 | f | 27 | - 676 | 26 | f | 1 | t - 677 | 26 | f | 2 | t - 678 | 26 | f | 3 | t - 679 | 26 | f | 4 | t - 680 | 26 | f | 5 | t - 681 | 26 | f | 6 | t - 682 | 26 | f | 7 | t - 683 | 26 | f | 8 | t - 684 | 26 | f | 9 | t - 685 | 26 | f | 10 | t - 686 | 26 | f | 11 | t - 687 | 26 | f | 12 | t - 688 | 26 | f | 13 | t - 689 | 26 | f | 14 | f - 690 | 26 | f | 15 | f - 691 | 26 | f | 16 | f - 692 | 26 | f | 17 | f - 693 | 26 | f | 18 | f - 694 | 26 | f | 19 | f - 695 | 26 | f | 20 | f - 696 | 26 | f | 21 | f - 697 | 26 | f | 22 | f - 698 | 26 | f | 23 | f - 699 | 26 | f | 24 | f - 700 | 26 | f | 25 | f - 701 | 26 | f | 26 | f - 702 | 26 | f | 27 | - 703 | 27 | | 1 | t - 704 | 27 | | 2 | t - 705 | 27 | | 3 | t - 706 | 27 | | 4 | t - 707 | 27 | | 5 | t - 708 | 27 | | 6 | t - 709 | 27 | | 7 | t - 710 | 27 | | 8 | t - 711 | 27 | | 9 | t - 712 | 27 | | 10 | t - 713 | 27 | | 11 | t - 714 | 27 | | 12 | t - 715 | 27 | | 13 | t - 716 | 27 | | 14 | f - 717 | 27 | | 15 | f - 718 | 27 | | 16 | f - 719 | 27 | | 17 | f - 720 | 27 | | 18 | f - 721 | 27 | | 19 | f - 722 | 27 | | 20 | f - 723 | 27 | | 21 | f - 724 | 27 | | 22 | f - 725 | 27 | | 23 | f - 726 | 27 | | 24 | f - 727 | 27 | | 25 | f - 728 | 27 | | 26 | f - 729 | 27 | | 27 | -(729 rows) - ---Testcase 60: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 61: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - b1 | b2 | a | o -----+----+---+--- - f | f | f | f - f | t | f | t - f | | f | - t | f | f | t - t | t | t | t - t | | | t - | f | f | - | t | | t - | | | -(9 rows) - ---Testcase 62: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 63: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - b1 | b2 | a | o -----+----+---+--- - t | t | t | t -(1 row) - ---Testcase 64: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 65: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - b1 | b2 | a | o -----+----+---+--- - f | t | f | t - t | f | f | t - t | t | t | t - t | | | t - | t | | t -(5 rows) - ---Testcase 66: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; - QUERY PLAN ------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) -(3 rows) - ---Testcase 67: -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; ---Testcase 68: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - t | f - t | t - t | - | f - | t - | -(6 rows) - ---Testcase 69: -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; ---Testcase 70: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) -(3 rows) - ---Testcase 71: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | t - f | - | f - | -(5 rows) - ---Testcase 72: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN_oper" - -> Foreign Delete on public."type_BOOLEAN_oper" - SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) -(3 rows) - ---Testcase 73: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; ---Testcase 74: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | - | f - | -(4 rows) - ---Testcase 75: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; ---Testcase 76: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 77: -DELETE FROM "type_BOOLEAN_oper" WHERE b2; ---Testcase 78: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 79: -DELETE FROM "type_BOOLEAN"; ---Testcase 003: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BOOLEAN" -drop cascades to foreign table "type_BOOLEAN+" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to server sqlite2 diff --git a/expected/15.7/types/macaddr.out b/expected/15.7/types/macaddr.out deleted file mode 100644 index 286573dd..00000000 --- a/expected/15.7/types/macaddr.out +++ /dev/null @@ -1,957 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); ---Testcase 012: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); ---Testcase 013: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); ---Testcase 014: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); ---Testcase 015: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); ---Testcase 016: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); ---Testcase 017: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); ---Testcase 018: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); ---Testcase 019: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); ---Testcase 020: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); ---Testcase 021: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); ---Testcase 022: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); ---Testcase 023: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); ---Testcase 024: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; ---Testcase 029: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); ---Testcase 030: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); ---Testcase 031: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); ---Testcase 032: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); ---Testcase 033: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); ---Testcase 034: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); ---Testcase 035: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); ---Testcase 036: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); ---Testcase 037: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); ---Testcase 038: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); ---Testcase 039: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); ---Testcase 040: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); ---Testcase 041: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); ---Testcase 042: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); ---Testcase 046: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); ---Testcase 047: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); ---Testcase 048: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); ---Testcase 049: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); ---Testcase 050: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); ---Testcase 051: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); ---Testcase 052: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); ---Testcase 053: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); ---Testcase 054: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); ---Testcase 055: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); ---Testcase 056: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); ---Testcase 057: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); ---Testcase 058: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); ---Testcase 062: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); ---Testcase 063: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); ---Testcase 064: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); ---Testcase 065: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); ---Testcase 066: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); ---Testcase 067: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); ---Testcase 068: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); ---Testcase 069: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); ---Testcase 070: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); ---Testcase 071: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); ---Testcase 072: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); ---Testcase 073: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); ---Testcase 074: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); ---Testcase 077: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); ---Testcase 108: -SELECT * FROM "type_MACADDR+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------+------+----+------------------- - 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; - i | m -----+------------------- - 63 | 00:00:00:00:00:01 - 64 | 00:00:00:00:00:02 - 65 | 00:00:00:00:00:03 - 66 | 00:00:01:00:00:00 - 67 | 00:00:02:00:00:00 - 68 | 00:00:03:00:00:00 - 60 | 01:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 62 | 03:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; - i | m -----+------------------- - 62 | 03:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 60 | 01:00:00:00:00:00 - 68 | 00:00:03:00:00:00 - 67 | 00:00:02:00:00:00 - 66 | 00:00:01:00:00:00 - 65 | 00:00:00:00:00:03 - 64 | 00:00:00:00:00:02 - 63 | 00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDRpk"; - col -------------------- - 01:02:03:04:05:06 - 01:02:03:04:05:06 - 01:02:03:04:05:06 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDRpk"; ---no macaddr operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m | '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m & '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m > '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m < '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m = '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m >= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <> '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR+" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to server sqlite2 diff --git a/expected/15.7/types/macaddr8.out b/expected/15.7/types/macaddr8.out deleted file mode 100644 index e367ee36..00000000 --- a/expected/15.7/types/macaddr8.out +++ /dev/null @@ -1,958 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); ---Testcase 012: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); ---Testcase 013: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); ---Testcase 014: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); ---Testcase 015: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); ---Testcase 016: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); ---Testcase 017: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); ---Testcase 018: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); ---Testcase 019: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); ---Testcase 020: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); ---Testcase 021: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); ---Testcase 022: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); ---Testcase 023: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); ---Testcase 024: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; ---Testcase 029: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); ---Testcase 030: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); ---Testcase 031: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); ---Testcase 032: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); ---Testcase 033: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); ---Testcase 034: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); ---Testcase 035: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); ---Testcase 036: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); ---Testcase 037: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); ---Testcase 038: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); ---Testcase 039: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); ---Testcase 040: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); ---Testcase 041: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); ---Testcase 042: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); ---Testcase 046: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); ---Testcase 047: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); ---Testcase 048: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); ---Testcase 049: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); ---Testcase 050: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); ---Testcase 051: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); ---Testcase 052: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); ---Testcase 053: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); ---Testcase 054: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); ---Testcase 055: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); ---Testcase 056: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); ---Testcase 057: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); ---Testcase 058: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); ---Testcase 062: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); ---Testcase 063: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); ---Testcase 064: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); ---Testcase 065: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); ---Testcase 066: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); ---Testcase 067: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); ---Testcase 068: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); ---Testcase 069: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); ---Testcase 070: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); ---Testcase 071: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); ---Testcase 072: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); ---Testcase 073: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); ---Testcase 074: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); ---Testcase 077: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); ---Testcase 108: -SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------------+------+----+------------------------- - 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR8"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; - i | m -----+------------------------- - 63 | 00:00:00:00:00:00:00:01 - 64 | 00:00:00:00:00:00:00:02 - 65 | 00:00:00:00:00:00:00:03 - 66 | 00:00:00:00:01:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 62 | 03:00:00:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; - i | m -----+------------------------- - 62 | 03:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 66 | 00:00:00:00:01:00:00:00 - 65 | 00:00:00:00:00:00:00:03 - 64 | 00:00:00:00:00:00:00:02 - 63 | 00:00:00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); -ERROR: option "column_type" provided more than once ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDR8pk"; - col -------------------------- - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDR8pk"; ---no macaddr8 operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "type_MACADDR8+" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to server sqlite2 diff --git a/expected/15.7/types/uuid.out b/expected/15.7/types/uuid.out deleted file mode 100644 index 35a2d86c..00000000 --- a/expected/15.7/types/uuid.out +++ /dev/null @@ -1,551 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); ---Testcase 010: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; ---Testcase 011: -INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 012: -INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 013: -INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 014: -INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 015: -INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 016: -INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 017: -INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 018: -INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 019: -INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 020: -INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 021: -INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 022: -INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 023: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 024: -INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 025: -INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 026: -INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 027: -INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 029: -INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 030: -INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 031: -INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 032: -INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 033: -INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 034: -INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 035: -INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 036: -INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 037: -INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 038: -INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 039: -INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 040: -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 041: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 042: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); ---Testcase 043: -INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 044: -INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 045: -INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 046: -INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 047: -INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 048: -INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 049: -INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 050: -INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 051: -INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 052: -INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 053: -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 054: -INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 055: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 056: -CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); ---Testcase 057: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(40 rows) - ---Testcase 058: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 059: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 060: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 061: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 062: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 063: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 064: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 065: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 066: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 067: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; ---Testcase 068: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) -(3 rows) - ---Testcase 069: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 070: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) -(3 rows) - ---Testcase 071: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 072: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; ---Testcase 073: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) -(3 rows) - ---Testcase 074: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(21 rows) - ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; ---Testcase 076: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 -(1 row) - ---Testcase 077: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; ---Testcase 076: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 077: -SELECT * FROM "type_UUID+"; - i | u | t | l ----+---+---+--- -(0 rows) - ---Testcase 078: -INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); ---Testcase 079: -SELECT * FROM "type_UUID+" WHERE "i" = 41; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 -(1 row) - ---Testcase 080: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; ---Testcase 081: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 082: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 083: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 084: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) -(3 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 086: -INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); ---Testcase 087: -INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); ---Testcase 088: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 089: -SELECT * FROM "type_UUID+" WHERE "i" = 42; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 090: -SELECT * FROM "type_UUID+" WHERE "i" = 43; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 091: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); - QUERY PLAN ----------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) -(3 rows) - ---Testcase 092: -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); ---Testcase 093: -INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); ---Testcase 094: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 - 44 | | null | -(2 rows) - ---Testcase 095: -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - i | u | t | l -----+---+------+--- - 44 | | null | -(1 row) - ---Testcase 096: -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) -(3 rows) - ---Testcase 098: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) -(3 rows) - ---Testcase 100: -CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 101: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); ---Testcase 102: -INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 103: -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 104: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(2 rows) - ---Testcase 105: ERR - primary key -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) ---Testcase 106: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 107: NO ERR, but the same semantics! -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 108: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(3 rows) - ---Testcase 109: -DELETE FROM "type_UUIDpk"; ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_UUID+" -drop cascades to foreign table "type_UUIDpk" -drop cascades to server sqlite2 diff --git a/expected/16.3/extra/bitstring.out b/expected/16.3/extra/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/16.3/extra/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/16.3/types/bitstring.out b/expected/16.3/types/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/16.3/types/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/16.3/types/bool.out b/expected/16.3/types/bool.out deleted file mode 100644 index 814110a1..00000000 --- a/expected/16.3/types/bool.out +++ /dev/null @@ -1,1276 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 000: -CREATE EXTENSION sqlite_fdw; ---Testcase 001: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 01: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; ---Testcase 02: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); ---Testcase 03: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); ---Testcase 04: -CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); ---Testcase 05: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; ---Testcase 06: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); ---Testcase 07: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); ---Testcase 08: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); ---Testcase 09: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); ---Testcase 10: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); ---Testcase 11: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); ---Testcase 12: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); ---Testcase 13: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); ---Testcase 14: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); ---Testcase 15: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); ---Testcase 16: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); ---Testcase 17: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); ---Testcase 18: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); ---Testcase 19: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); ---Testcase 20: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); ---Testcase 21: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); ---Testcase 22: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); ---Testcase 23: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); ---Testcase 24: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); ---Testcase 25: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); ---Testcase 26: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); ---Testcase 27: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); ---Testcase 28: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); ---Testcase 29: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); ---Testcase 30: -SELECT * FROM "type_BOOLEAN"; - i | b -----+------- - 1 | 1 - 2 | 0 - 3 | true - 4 | false - 5 | true - 6 | false - 7 | Yes - 8 | YeS - 9 | yes - 10 | no - 11 | No - 12 | nO - 13 | off - 14 | oFf - 15 | on - 16 | ON - 17 | t - 18 | T - 19 | Y - 20 | y - 21 | F - 22 | f - 23 | x - 24 | 0 - 25 | 1 - 26 | -(26 rows) - ---Testcase 31: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 32: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN"; - QUERY PLAN ---------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN" - Output: i, b - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" -(3 rows) - ---Testcase 33: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN+"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" - Output: i, b, t, l - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 34: ERR - invalid text affinity because not ISO:SQL text input -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "text" affinity (1 bytes) : 'x' -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 35 -DELETE FROM "type_BOOLEAN" WHERE i = 23; ---Testcase 36: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 37: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; - i | b | t | l -----+---+------+--- - 26 | | null | -(1 row) - ---Testcase 38: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 -(24 rows) - ---Testcase 39: -SELECT * FROM "type_BOOLEAN+" WHERE b; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 3 | t | text | 4 - 5 | t | text | 4 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 25 | t | integer | 1 -(13 rows) - ---Testcase 40: -SELECT * FROM "type_BOOLEAN+" WHERE NOT b; - i | b | t | l -----+---+---------+--- - 2 | f | integer | 1 - 4 | f | text | 5 - 6 | f | text | 5 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 -(11 rows) - ---Testcase 41: -CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 42: -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ---Testcase 43: -INSERT INTO "type_BOOLEANpk" VALUES (FALSE); ---Testcase 44: ERR - primary key -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) ---Testcase 45: -DELETE FROM "type_BOOLEANpk"; ---Testcase 46: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; ---Testcase 47: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); ---Testcase 48: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 49: ERR - invalid float for bool column -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "real" affinity : 3.14159265358979 -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 50 -DELETE FROM "type_BOOLEAN" WHERE i = 27; ---Testcase 51: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 52: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE b; - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 53: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; - QUERY PLAN ----------------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 54: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE b; - QUERY PLAN ------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 55: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE NOT b; - QUERY PLAN ------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 56: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" b - Output: i, b, t, l, (NOT b) - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 57: -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - i | b | t | l | nb -----+---+---------+---+---- - 1 | t | integer | 1 | f - 2 | f | integer | 1 | t - 3 | t | text | 4 | f - 4 | f | text | 5 | t - 5 | t | text | 4 | f - 6 | f | text | 5 | t - 7 | t | text | 3 | f - 8 | t | text | 3 | f - 9 | t | text | 3 | f - 10 | f | text | 2 | t - 11 | f | text | 2 | t - 12 | f | text | 2 | t - 13 | f | text | 3 | t - 14 | f | text | 3 | t - 15 | t | text | 2 | f - 16 | t | text | 2 | f - 17 | t | text | 1 | f - 18 | t | text | 1 | f - 19 | t | text | 1 | f - 20 | t | text | 1 | f - 21 | f | text | 1 | t - 22 | f | text | 1 | t - 24 | f | integer | 1 | t - 25 | t | integer | 1 | f - 26 | | null | | -(25 rows) - ---Testcase 58: -CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); ---Testcase 59: see INIT.SQL with mixed affinity boolean data -SELECT * FROM "type_BOOLEAN_oper"; - i | i1 | b1 | i2 | b2 ------+----+----+----+---- - 1 | 1 | t | 1 | t - 2 | 1 | t | 2 | t - 3 | 1 | t | 3 | t - 4 | 1 | t | 4 | t - 5 | 1 | t | 5 | t - 6 | 1 | t | 6 | t - 7 | 1 | t | 7 | t - 8 | 1 | t | 8 | t - 9 | 1 | t | 9 | t - 10 | 1 | t | 10 | t - 11 | 1 | t | 11 | t - 12 | 1 | t | 12 | t - 13 | 1 | t | 13 | t - 14 | 1 | t | 14 | f - 15 | 1 | t | 15 | f - 16 | 1 | t | 16 | f - 17 | 1 | t | 17 | f - 18 | 1 | t | 18 | f - 19 | 1 | t | 19 | f - 20 | 1 | t | 20 | f - 21 | 1 | t | 21 | f - 22 | 1 | t | 22 | f - 23 | 1 | t | 23 | f - 24 | 1 | t | 24 | f - 25 | 1 | t | 25 | f - 26 | 1 | t | 26 | f - 27 | 1 | t | 27 | - 28 | 2 | t | 1 | t - 29 | 2 | t | 2 | t - 30 | 2 | t | 3 | t - 31 | 2 | t | 4 | t - 32 | 2 | t | 5 | t - 33 | 2 | t | 6 | t - 34 | 2 | t | 7 | t - 35 | 2 | t | 8 | t - 36 | 2 | t | 9 | t - 37 | 2 | t | 10 | t - 38 | 2 | t | 11 | t - 39 | 2 | t | 12 | t - 40 | 2 | t | 13 | t - 41 | 2 | t | 14 | f - 42 | 2 | t | 15 | f - 43 | 2 | t | 16 | f - 44 | 2 | t | 17 | f - 45 | 2 | t | 18 | f - 46 | 2 | t | 19 | f - 47 | 2 | t | 20 | f - 48 | 2 | t | 21 | f - 49 | 2 | t | 22 | f - 50 | 2 | t | 23 | f - 51 | 2 | t | 24 | f - 52 | 2 | t | 25 | f - 53 | 2 | t | 26 | f - 54 | 2 | t | 27 | - 55 | 3 | t | 1 | t - 56 | 3 | t | 2 | t - 57 | 3 | t | 3 | t - 58 | 3 | t | 4 | t - 59 | 3 | t | 5 | t - 60 | 3 | t | 6 | t - 61 | 3 | t | 7 | t - 62 | 3 | t | 8 | t - 63 | 3 | t | 9 | t - 64 | 3 | t | 10 | t - 65 | 3 | t | 11 | t - 66 | 3 | t | 12 | t - 67 | 3 | t | 13 | t - 68 | 3 | t | 14 | f - 69 | 3 | t | 15 | f - 70 | 3 | t | 16 | f - 71 | 3 | t | 17 | f - 72 | 3 | t | 18 | f - 73 | 3 | t | 19 | f - 74 | 3 | t | 20 | f - 75 | 3 | t | 21 | f - 76 | 3 | t | 22 | f - 77 | 3 | t | 23 | f - 78 | 3 | t | 24 | f - 79 | 3 | t | 25 | f - 80 | 3 | t | 26 | f - 81 | 3 | t | 27 | - 82 | 4 | t | 1 | t - 83 | 4 | t | 2 | t - 84 | 4 | t | 3 | t - 85 | 4 | t | 4 | t - 86 | 4 | t | 5 | t - 87 | 4 | t | 6 | t - 88 | 4 | t | 7 | t - 89 | 4 | t | 8 | t - 90 | 4 | t | 9 | t - 91 | 4 | t | 10 | t - 92 | 4 | t | 11 | t - 93 | 4 | t | 12 | t - 94 | 4 | t | 13 | t - 95 | 4 | t | 14 | f - 96 | 4 | t | 15 | f - 97 | 4 | t | 16 | f - 98 | 4 | t | 17 | f - 99 | 4 | t | 18 | f - 100 | 4 | t | 19 | f - 101 | 4 | t | 20 | f - 102 | 4 | t | 21 | f - 103 | 4 | t | 22 | f - 104 | 4 | t | 23 | f - 105 | 4 | t | 24 | f - 106 | 4 | t | 25 | f - 107 | 4 | t | 26 | f - 108 | 4 | t | 27 | - 109 | 5 | t | 1 | t - 110 | 5 | t | 2 | t - 111 | 5 | t | 3 | t - 112 | 5 | t | 4 | t - 113 | 5 | t | 5 | t - 114 | 5 | t | 6 | t - 115 | 5 | t | 7 | t - 116 | 5 | t | 8 | t - 117 | 5 | t | 9 | t - 118 | 5 | t | 10 | t - 119 | 5 | t | 11 | t - 120 | 5 | t | 12 | t - 121 | 5 | t | 13 | t - 122 | 5 | t | 14 | f - 123 | 5 | t | 15 | f - 124 | 5 | t | 16 | f - 125 | 5 | t | 17 | f - 126 | 5 | t | 18 | f - 127 | 5 | t | 19 | f - 128 | 5 | t | 20 | f - 129 | 5 | t | 21 | f - 130 | 5 | t | 22 | f - 131 | 5 | t | 23 | f - 132 | 5 | t | 24 | f - 133 | 5 | t | 25 | f - 134 | 5 | t | 26 | f - 135 | 5 | t | 27 | - 136 | 6 | t | 1 | t - 137 | 6 | t | 2 | t - 138 | 6 | t | 3 | t - 139 | 6 | t | 4 | t - 140 | 6 | t | 5 | t - 141 | 6 | t | 6 | t - 142 | 6 | t | 7 | t - 143 | 6 | t | 8 | t - 144 | 6 | t | 9 | t - 145 | 6 | t | 10 | t - 146 | 6 | t | 11 | t - 147 | 6 | t | 12 | t - 148 | 6 | t | 13 | t - 149 | 6 | t | 14 | f - 150 | 6 | t | 15 | f - 151 | 6 | t | 16 | f - 152 | 6 | t | 17 | f - 153 | 6 | t | 18 | f - 154 | 6 | t | 19 | f - 155 | 6 | t | 20 | f - 156 | 6 | t | 21 | f - 157 | 6 | t | 22 | f - 158 | 6 | t | 23 | f - 159 | 6 | t | 24 | f - 160 | 6 | t | 25 | f - 161 | 6 | t | 26 | f - 162 | 6 | t | 27 | - 163 | 7 | t | 1 | t - 164 | 7 | t | 2 | t - 165 | 7 | t | 3 | t - 166 | 7 | t | 4 | t - 167 | 7 | t | 5 | t - 168 | 7 | t | 6 | t - 169 | 7 | t | 7 | t - 170 | 7 | t | 8 | t - 171 | 7 | t | 9 | t - 172 | 7 | t | 10 | t - 173 | 7 | t | 11 | t - 174 | 7 | t | 12 | t - 175 | 7 | t | 13 | t - 176 | 7 | t | 14 | f - 177 | 7 | t | 15 | f - 178 | 7 | t | 16 | f - 179 | 7 | t | 17 | f - 180 | 7 | t | 18 | f - 181 | 7 | t | 19 | f - 182 | 7 | t | 20 | f - 183 | 7 | t | 21 | f - 184 | 7 | t | 22 | f - 185 | 7 | t | 23 | f - 186 | 7 | t | 24 | f - 187 | 7 | t | 25 | f - 188 | 7 | t | 26 | f - 189 | 7 | t | 27 | - 190 | 8 | t | 1 | t - 191 | 8 | t | 2 | t - 192 | 8 | t | 3 | t - 193 | 8 | t | 4 | t - 194 | 8 | t | 5 | t - 195 | 8 | t | 6 | t - 196 | 8 | t | 7 | t - 197 | 8 | t | 8 | t - 198 | 8 | t | 9 | t - 199 | 8 | t | 10 | t - 200 | 8 | t | 11 | t - 201 | 8 | t | 12 | t - 202 | 8 | t | 13 | t - 203 | 8 | t | 14 | f - 204 | 8 | t | 15 | f - 205 | 8 | t | 16 | f - 206 | 8 | t | 17 | f - 207 | 8 | t | 18 | f - 208 | 8 | t | 19 | f - 209 | 8 | t | 20 | f - 210 | 8 | t | 21 | f - 211 | 8 | t | 22 | f - 212 | 8 | t | 23 | f - 213 | 8 | t | 24 | f - 214 | 8 | t | 25 | f - 215 | 8 | t | 26 | f - 216 | 8 | t | 27 | - 217 | 9 | t | 1 | t - 218 | 9 | t | 2 | t - 219 | 9 | t | 3 | t - 220 | 9 | t | 4 | t - 221 | 9 | t | 5 | t - 222 | 9 | t | 6 | t - 223 | 9 | t | 7 | t - 224 | 9 | t | 8 | t - 225 | 9 | t | 9 | t - 226 | 9 | t | 10 | t - 227 | 9 | t | 11 | t - 228 | 9 | t | 12 | t - 229 | 9 | t | 13 | t - 230 | 9 | t | 14 | f - 231 | 9 | t | 15 | f - 232 | 9 | t | 16 | f - 233 | 9 | t | 17 | f - 234 | 9 | t | 18 | f - 235 | 9 | t | 19 | f - 236 | 9 | t | 20 | f - 237 | 9 | t | 21 | f - 238 | 9 | t | 22 | f - 239 | 9 | t | 23 | f - 240 | 9 | t | 24 | f - 241 | 9 | t | 25 | f - 242 | 9 | t | 26 | f - 243 | 9 | t | 27 | - 244 | 10 | t | 1 | t - 245 | 10 | t | 2 | t - 246 | 10 | t | 3 | t - 247 | 10 | t | 4 | t - 248 | 10 | t | 5 | t - 249 | 10 | t | 6 | t - 250 | 10 | t | 7 | t - 251 | 10 | t | 8 | t - 252 | 10 | t | 9 | t - 253 | 10 | t | 10 | t - 254 | 10 | t | 11 | t - 255 | 10 | t | 12 | t - 256 | 10 | t | 13 | t - 257 | 10 | t | 14 | f - 258 | 10 | t | 15 | f - 259 | 10 | t | 16 | f - 260 | 10 | t | 17 | f - 261 | 10 | t | 18 | f - 262 | 10 | t | 19 | f - 263 | 10 | t | 20 | f - 264 | 10 | t | 21 | f - 265 | 10 | t | 22 | f - 266 | 10 | t | 23 | f - 267 | 10 | t | 24 | f - 268 | 10 | t | 25 | f - 269 | 10 | t | 26 | f - 270 | 10 | t | 27 | - 271 | 11 | t | 1 | t - 272 | 11 | t | 2 | t - 273 | 11 | t | 3 | t - 274 | 11 | t | 4 | t - 275 | 11 | t | 5 | t - 276 | 11 | t | 6 | t - 277 | 11 | t | 7 | t - 278 | 11 | t | 8 | t - 279 | 11 | t | 9 | t - 280 | 11 | t | 10 | t - 281 | 11 | t | 11 | t - 282 | 11 | t | 12 | t - 283 | 11 | t | 13 | t - 284 | 11 | t | 14 | f - 285 | 11 | t | 15 | f - 286 | 11 | t | 16 | f - 287 | 11 | t | 17 | f - 288 | 11 | t | 18 | f - 289 | 11 | t | 19 | f - 290 | 11 | t | 20 | f - 291 | 11 | t | 21 | f - 292 | 11 | t | 22 | f - 293 | 11 | t | 23 | f - 294 | 11 | t | 24 | f - 295 | 11 | t | 25 | f - 296 | 11 | t | 26 | f - 297 | 11 | t | 27 | - 298 | 12 | t | 1 | t - 299 | 12 | t | 2 | t - 300 | 12 | t | 3 | t - 301 | 12 | t | 4 | t - 302 | 12 | t | 5 | t - 303 | 12 | t | 6 | t - 304 | 12 | t | 7 | t - 305 | 12 | t | 8 | t - 306 | 12 | t | 9 | t - 307 | 12 | t | 10 | t - 308 | 12 | t | 11 | t - 309 | 12 | t | 12 | t - 310 | 12 | t | 13 | t - 311 | 12 | t | 14 | f - 312 | 12 | t | 15 | f - 313 | 12 | t | 16 | f - 314 | 12 | t | 17 | f - 315 | 12 | t | 18 | f - 316 | 12 | t | 19 | f - 317 | 12 | t | 20 | f - 318 | 12 | t | 21 | f - 319 | 12 | t | 22 | f - 320 | 12 | t | 23 | f - 321 | 12 | t | 24 | f - 322 | 12 | t | 25 | f - 323 | 12 | t | 26 | f - 324 | 12 | t | 27 | - 325 | 13 | t | 1 | t - 326 | 13 | t | 2 | t - 327 | 13 | t | 3 | t - 328 | 13 | t | 4 | t - 329 | 13 | t | 5 | t - 330 | 13 | t | 6 | t - 331 | 13 | t | 7 | t - 332 | 13 | t | 8 | t - 333 | 13 | t | 9 | t - 334 | 13 | t | 10 | t - 335 | 13 | t | 11 | t - 336 | 13 | t | 12 | t - 337 | 13 | t | 13 | t - 338 | 13 | t | 14 | f - 339 | 13 | t | 15 | f - 340 | 13 | t | 16 | f - 341 | 13 | t | 17 | f - 342 | 13 | t | 18 | f - 343 | 13 | t | 19 | f - 344 | 13 | t | 20 | f - 345 | 13 | t | 21 | f - 346 | 13 | t | 22 | f - 347 | 13 | t | 23 | f - 348 | 13 | t | 24 | f - 349 | 13 | t | 25 | f - 350 | 13 | t | 26 | f - 351 | 13 | t | 27 | - 352 | 14 | f | 1 | t - 353 | 14 | f | 2 | t - 354 | 14 | f | 3 | t - 355 | 14 | f | 4 | t - 356 | 14 | f | 5 | t - 357 | 14 | f | 6 | t - 358 | 14 | f | 7 | t - 359 | 14 | f | 8 | t - 360 | 14 | f | 9 | t - 361 | 14 | f | 10 | t - 362 | 14 | f | 11 | t - 363 | 14 | f | 12 | t - 364 | 14 | f | 13 | t - 365 | 14 | f | 14 | f - 366 | 14 | f | 15 | f - 367 | 14 | f | 16 | f - 368 | 14 | f | 17 | f - 369 | 14 | f | 18 | f - 370 | 14 | f | 19 | f - 371 | 14 | f | 20 | f - 372 | 14 | f | 21 | f - 373 | 14 | f | 22 | f - 374 | 14 | f | 23 | f - 375 | 14 | f | 24 | f - 376 | 14 | f | 25 | f - 377 | 14 | f | 26 | f - 378 | 14 | f | 27 | - 379 | 15 | f | 1 | t - 380 | 15 | f | 2 | t - 381 | 15 | f | 3 | t - 382 | 15 | f | 4 | t - 383 | 15 | f | 5 | t - 384 | 15 | f | 6 | t - 385 | 15 | f | 7 | t - 386 | 15 | f | 8 | t - 387 | 15 | f | 9 | t - 388 | 15 | f | 10 | t - 389 | 15 | f | 11 | t - 390 | 15 | f | 12 | t - 391 | 15 | f | 13 | t - 392 | 15 | f | 14 | f - 393 | 15 | f | 15 | f - 394 | 15 | f | 16 | f - 395 | 15 | f | 17 | f - 396 | 15 | f | 18 | f - 397 | 15 | f | 19 | f - 398 | 15 | f | 20 | f - 399 | 15 | f | 21 | f - 400 | 15 | f | 22 | f - 401 | 15 | f | 23 | f - 402 | 15 | f | 24 | f - 403 | 15 | f | 25 | f - 404 | 15 | f | 26 | f - 405 | 15 | f | 27 | - 406 | 16 | f | 1 | t - 407 | 16 | f | 2 | t - 408 | 16 | f | 3 | t - 409 | 16 | f | 4 | t - 410 | 16 | f | 5 | t - 411 | 16 | f | 6 | t - 412 | 16 | f | 7 | t - 413 | 16 | f | 8 | t - 414 | 16 | f | 9 | t - 415 | 16 | f | 10 | t - 416 | 16 | f | 11 | t - 417 | 16 | f | 12 | t - 418 | 16 | f | 13 | t - 419 | 16 | f | 14 | f - 420 | 16 | f | 15 | f - 421 | 16 | f | 16 | f - 422 | 16 | f | 17 | f - 423 | 16 | f | 18 | f - 424 | 16 | f | 19 | f - 425 | 16 | f | 20 | f - 426 | 16 | f | 21 | f - 427 | 16 | f | 22 | f - 428 | 16 | f | 23 | f - 429 | 16 | f | 24 | f - 430 | 16 | f | 25 | f - 431 | 16 | f | 26 | f - 432 | 16 | f | 27 | - 433 | 17 | f | 1 | t - 434 | 17 | f | 2 | t - 435 | 17 | f | 3 | t - 436 | 17 | f | 4 | t - 437 | 17 | f | 5 | t - 438 | 17 | f | 6 | t - 439 | 17 | f | 7 | t - 440 | 17 | f | 8 | t - 441 | 17 | f | 9 | t - 442 | 17 | f | 10 | t - 443 | 17 | f | 11 | t - 444 | 17 | f | 12 | t - 445 | 17 | f | 13 | t - 446 | 17 | f | 14 | f - 447 | 17 | f | 15 | f - 448 | 17 | f | 16 | f - 449 | 17 | f | 17 | f - 450 | 17 | f | 18 | f - 451 | 17 | f | 19 | f - 452 | 17 | f | 20 | f - 453 | 17 | f | 21 | f - 454 | 17 | f | 22 | f - 455 | 17 | f | 23 | f - 456 | 17 | f | 24 | f - 457 | 17 | f | 25 | f - 458 | 17 | f | 26 | f - 459 | 17 | f | 27 | - 460 | 18 | f | 1 | t - 461 | 18 | f | 2 | t - 462 | 18 | f | 3 | t - 463 | 18 | f | 4 | t - 464 | 18 | f | 5 | t - 465 | 18 | f | 6 | t - 466 | 18 | f | 7 | t - 467 | 18 | f | 8 | t - 468 | 18 | f | 9 | t - 469 | 18 | f | 10 | t - 470 | 18 | f | 11 | t - 471 | 18 | f | 12 | t - 472 | 18 | f | 13 | t - 473 | 18 | f | 14 | f - 474 | 18 | f | 15 | f - 475 | 18 | f | 16 | f - 476 | 18 | f | 17 | f - 477 | 18 | f | 18 | f - 478 | 18 | f | 19 | f - 479 | 18 | f | 20 | f - 480 | 18 | f | 21 | f - 481 | 18 | f | 22 | f - 482 | 18 | f | 23 | f - 483 | 18 | f | 24 | f - 484 | 18 | f | 25 | f - 485 | 18 | f | 26 | f - 486 | 18 | f | 27 | - 487 | 19 | f | 1 | t - 488 | 19 | f | 2 | t - 489 | 19 | f | 3 | t - 490 | 19 | f | 4 | t - 491 | 19 | f | 5 | t - 492 | 19 | f | 6 | t - 493 | 19 | f | 7 | t - 494 | 19 | f | 8 | t - 495 | 19 | f | 9 | t - 496 | 19 | f | 10 | t - 497 | 19 | f | 11 | t - 498 | 19 | f | 12 | t - 499 | 19 | f | 13 | t - 500 | 19 | f | 14 | f - 501 | 19 | f | 15 | f - 502 | 19 | f | 16 | f - 503 | 19 | f | 17 | f - 504 | 19 | f | 18 | f - 505 | 19 | f | 19 | f - 506 | 19 | f | 20 | f - 507 | 19 | f | 21 | f - 508 | 19 | f | 22 | f - 509 | 19 | f | 23 | f - 510 | 19 | f | 24 | f - 511 | 19 | f | 25 | f - 512 | 19 | f | 26 | f - 513 | 19 | f | 27 | - 514 | 20 | f | 1 | t - 515 | 20 | f | 2 | t - 516 | 20 | f | 3 | t - 517 | 20 | f | 4 | t - 518 | 20 | f | 5 | t - 519 | 20 | f | 6 | t - 520 | 20 | f | 7 | t - 521 | 20 | f | 8 | t - 522 | 20 | f | 9 | t - 523 | 20 | f | 10 | t - 524 | 20 | f | 11 | t - 525 | 20 | f | 12 | t - 526 | 20 | f | 13 | t - 527 | 20 | f | 14 | f - 528 | 20 | f | 15 | f - 529 | 20 | f | 16 | f - 530 | 20 | f | 17 | f - 531 | 20 | f | 18 | f - 532 | 20 | f | 19 | f - 533 | 20 | f | 20 | f - 534 | 20 | f | 21 | f - 535 | 20 | f | 22 | f - 536 | 20 | f | 23 | f - 537 | 20 | f | 24 | f - 538 | 20 | f | 25 | f - 539 | 20 | f | 26 | f - 540 | 20 | f | 27 | - 541 | 21 | f | 1 | t - 542 | 21 | f | 2 | t - 543 | 21 | f | 3 | t - 544 | 21 | f | 4 | t - 545 | 21 | f | 5 | t - 546 | 21 | f | 6 | t - 547 | 21 | f | 7 | t - 548 | 21 | f | 8 | t - 549 | 21 | f | 9 | t - 550 | 21 | f | 10 | t - 551 | 21 | f | 11 | t - 552 | 21 | f | 12 | t - 553 | 21 | f | 13 | t - 554 | 21 | f | 14 | f - 555 | 21 | f | 15 | f - 556 | 21 | f | 16 | f - 557 | 21 | f | 17 | f - 558 | 21 | f | 18 | f - 559 | 21 | f | 19 | f - 560 | 21 | f | 20 | f - 561 | 21 | f | 21 | f - 562 | 21 | f | 22 | f - 563 | 21 | f | 23 | f - 564 | 21 | f | 24 | f - 565 | 21 | f | 25 | f - 566 | 21 | f | 26 | f - 567 | 21 | f | 27 | - 568 | 22 | f | 1 | t - 569 | 22 | f | 2 | t - 570 | 22 | f | 3 | t - 571 | 22 | f | 4 | t - 572 | 22 | f | 5 | t - 573 | 22 | f | 6 | t - 574 | 22 | f | 7 | t - 575 | 22 | f | 8 | t - 576 | 22 | f | 9 | t - 577 | 22 | f | 10 | t - 578 | 22 | f | 11 | t - 579 | 22 | f | 12 | t - 580 | 22 | f | 13 | t - 581 | 22 | f | 14 | f - 582 | 22 | f | 15 | f - 583 | 22 | f | 16 | f - 584 | 22 | f | 17 | f - 585 | 22 | f | 18 | f - 586 | 22 | f | 19 | f - 587 | 22 | f | 20 | f - 588 | 22 | f | 21 | f - 589 | 22 | f | 22 | f - 590 | 22 | f | 23 | f - 591 | 22 | f | 24 | f - 592 | 22 | f | 25 | f - 593 | 22 | f | 26 | f - 594 | 22 | f | 27 | - 595 | 23 | f | 1 | t - 596 | 23 | f | 2 | t - 597 | 23 | f | 3 | t - 598 | 23 | f | 4 | t - 599 | 23 | f | 5 | t - 600 | 23 | f | 6 | t - 601 | 23 | f | 7 | t - 602 | 23 | f | 8 | t - 603 | 23 | f | 9 | t - 604 | 23 | f | 10 | t - 605 | 23 | f | 11 | t - 606 | 23 | f | 12 | t - 607 | 23 | f | 13 | t - 608 | 23 | f | 14 | f - 609 | 23 | f | 15 | f - 610 | 23 | f | 16 | f - 611 | 23 | f | 17 | f - 612 | 23 | f | 18 | f - 613 | 23 | f | 19 | f - 614 | 23 | f | 20 | f - 615 | 23 | f | 21 | f - 616 | 23 | f | 22 | f - 617 | 23 | f | 23 | f - 618 | 23 | f | 24 | f - 619 | 23 | f | 25 | f - 620 | 23 | f | 26 | f - 621 | 23 | f | 27 | - 622 | 24 | f | 1 | t - 623 | 24 | f | 2 | t - 624 | 24 | f | 3 | t - 625 | 24 | f | 4 | t - 626 | 24 | f | 5 | t - 627 | 24 | f | 6 | t - 628 | 24 | f | 7 | t - 629 | 24 | f | 8 | t - 630 | 24 | f | 9 | t - 631 | 24 | f | 10 | t - 632 | 24 | f | 11 | t - 633 | 24 | f | 12 | t - 634 | 24 | f | 13 | t - 635 | 24 | f | 14 | f - 636 | 24 | f | 15 | f - 637 | 24 | f | 16 | f - 638 | 24 | f | 17 | f - 639 | 24 | f | 18 | f - 640 | 24 | f | 19 | f - 641 | 24 | f | 20 | f - 642 | 24 | f | 21 | f - 643 | 24 | f | 22 | f - 644 | 24 | f | 23 | f - 645 | 24 | f | 24 | f - 646 | 24 | f | 25 | f - 647 | 24 | f | 26 | f - 648 | 24 | f | 27 | - 649 | 25 | f | 1 | t - 650 | 25 | f | 2 | t - 651 | 25 | f | 3 | t - 652 | 25 | f | 4 | t - 653 | 25 | f | 5 | t - 654 | 25 | f | 6 | t - 655 | 25 | f | 7 | t - 656 | 25 | f | 8 | t - 657 | 25 | f | 9 | t - 658 | 25 | f | 10 | t - 659 | 25 | f | 11 | t - 660 | 25 | f | 12 | t - 661 | 25 | f | 13 | t - 662 | 25 | f | 14 | f - 663 | 25 | f | 15 | f - 664 | 25 | f | 16 | f - 665 | 25 | f | 17 | f - 666 | 25 | f | 18 | f - 667 | 25 | f | 19 | f - 668 | 25 | f | 20 | f - 669 | 25 | f | 21 | f - 670 | 25 | f | 22 | f - 671 | 25 | f | 23 | f - 672 | 25 | f | 24 | f - 673 | 25 | f | 25 | f - 674 | 25 | f | 26 | f - 675 | 25 | f | 27 | - 676 | 26 | f | 1 | t - 677 | 26 | f | 2 | t - 678 | 26 | f | 3 | t - 679 | 26 | f | 4 | t - 680 | 26 | f | 5 | t - 681 | 26 | f | 6 | t - 682 | 26 | f | 7 | t - 683 | 26 | f | 8 | t - 684 | 26 | f | 9 | t - 685 | 26 | f | 10 | t - 686 | 26 | f | 11 | t - 687 | 26 | f | 12 | t - 688 | 26 | f | 13 | t - 689 | 26 | f | 14 | f - 690 | 26 | f | 15 | f - 691 | 26 | f | 16 | f - 692 | 26 | f | 17 | f - 693 | 26 | f | 18 | f - 694 | 26 | f | 19 | f - 695 | 26 | f | 20 | f - 696 | 26 | f | 21 | f - 697 | 26 | f | 22 | f - 698 | 26 | f | 23 | f - 699 | 26 | f | 24 | f - 700 | 26 | f | 25 | f - 701 | 26 | f | 26 | f - 702 | 26 | f | 27 | - 703 | 27 | | 1 | t - 704 | 27 | | 2 | t - 705 | 27 | | 3 | t - 706 | 27 | | 4 | t - 707 | 27 | | 5 | t - 708 | 27 | | 6 | t - 709 | 27 | | 7 | t - 710 | 27 | | 8 | t - 711 | 27 | | 9 | t - 712 | 27 | | 10 | t - 713 | 27 | | 11 | t - 714 | 27 | | 12 | t - 715 | 27 | | 13 | t - 716 | 27 | | 14 | f - 717 | 27 | | 15 | f - 718 | 27 | | 16 | f - 719 | 27 | | 17 | f - 720 | 27 | | 18 | f - 721 | 27 | | 19 | f - 722 | 27 | | 20 | f - 723 | 27 | | 21 | f - 724 | 27 | | 22 | f - 725 | 27 | | 23 | f - 726 | 27 | | 24 | f - 727 | 27 | | 25 | f - 728 | 27 | | 26 | f - 729 | 27 | | 27 | -(729 rows) - ---Testcase 60: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 61: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - b1 | b2 | a | o -----+----+---+--- - f | f | f | f - f | t | f | t - f | | f | - t | f | f | t - t | t | t | t - t | | | t - | f | f | - | t | | t - | | | -(9 rows) - ---Testcase 62: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 63: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - b1 | b2 | a | o -----+----+---+--- - t | t | t | t -(1 row) - ---Testcase 64: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 65: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - b1 | b2 | a | o -----+----+---+--- - f | t | f | t - t | f | f | t - t | t | t | t - t | | | t - | t | | t -(5 rows) - ---Testcase 66: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; - QUERY PLAN ------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) -(3 rows) - ---Testcase 67: -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; ---Testcase 68: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - t | f - t | t - t | - | f - | t - | -(6 rows) - ---Testcase 69: -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; ---Testcase 70: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) -(3 rows) - ---Testcase 71: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | t - f | - | f - | -(5 rows) - ---Testcase 72: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN_oper" - -> Foreign Delete on public."type_BOOLEAN_oper" - SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) -(3 rows) - ---Testcase 73: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; ---Testcase 74: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | - | f - | -(4 rows) - ---Testcase 75: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; ---Testcase 76: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 77: -DELETE FROM "type_BOOLEAN_oper" WHERE b2; ---Testcase 78: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 79: -DELETE FROM "type_BOOLEAN"; ---Testcase 003: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BOOLEAN" -drop cascades to foreign table "type_BOOLEAN+" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to server sqlite2 diff --git a/expected/16.3/types/macaddr.out b/expected/16.3/types/macaddr.out deleted file mode 100644 index 286573dd..00000000 --- a/expected/16.3/types/macaddr.out +++ /dev/null @@ -1,957 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); ---Testcase 012: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); ---Testcase 013: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); ---Testcase 014: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); ---Testcase 015: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); ---Testcase 016: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); ---Testcase 017: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); ---Testcase 018: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); ---Testcase 019: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); ---Testcase 020: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); ---Testcase 021: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); ---Testcase 022: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); ---Testcase 023: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); ---Testcase 024: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; ---Testcase 029: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); ---Testcase 030: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); ---Testcase 031: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); ---Testcase 032: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); ---Testcase 033: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); ---Testcase 034: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); ---Testcase 035: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); ---Testcase 036: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); ---Testcase 037: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); ---Testcase 038: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); ---Testcase 039: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); ---Testcase 040: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); ---Testcase 041: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); ---Testcase 042: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); ---Testcase 046: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); ---Testcase 047: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); ---Testcase 048: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); ---Testcase 049: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); ---Testcase 050: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); ---Testcase 051: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); ---Testcase 052: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); ---Testcase 053: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); ---Testcase 054: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); ---Testcase 055: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); ---Testcase 056: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); ---Testcase 057: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); ---Testcase 058: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); ---Testcase 062: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); ---Testcase 063: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); ---Testcase 064: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); ---Testcase 065: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); ---Testcase 066: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); ---Testcase 067: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); ---Testcase 068: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); ---Testcase 069: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); ---Testcase 070: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); ---Testcase 071: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); ---Testcase 072: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); ---Testcase 073: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); ---Testcase 074: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); ---Testcase 077: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); ---Testcase 108: -SELECT * FROM "type_MACADDR+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------+------+----+------------------- - 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; - i | m -----+------------------- - 63 | 00:00:00:00:00:01 - 64 | 00:00:00:00:00:02 - 65 | 00:00:00:00:00:03 - 66 | 00:00:01:00:00:00 - 67 | 00:00:02:00:00:00 - 68 | 00:00:03:00:00:00 - 60 | 01:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 62 | 03:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; - i | m -----+------------------- - 62 | 03:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 60 | 01:00:00:00:00:00 - 68 | 00:00:03:00:00:00 - 67 | 00:00:02:00:00:00 - 66 | 00:00:01:00:00:00 - 65 | 00:00:00:00:00:03 - 64 | 00:00:00:00:00:02 - 63 | 00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDRpk"; - col -------------------- - 01:02:03:04:05:06 - 01:02:03:04:05:06 - 01:02:03:04:05:06 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDRpk"; ---no macaddr operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m | '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m & '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m > '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m < '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m = '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m >= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <> '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR+" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to server sqlite2 diff --git a/expected/16.3/types/macaddr8.out b/expected/16.3/types/macaddr8.out deleted file mode 100644 index e367ee36..00000000 --- a/expected/16.3/types/macaddr8.out +++ /dev/null @@ -1,958 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); ---Testcase 012: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); ---Testcase 013: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); ---Testcase 014: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); ---Testcase 015: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); ---Testcase 016: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); ---Testcase 017: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); ---Testcase 018: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); ---Testcase 019: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); ---Testcase 020: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); ---Testcase 021: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); ---Testcase 022: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); ---Testcase 023: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); ---Testcase 024: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; ---Testcase 029: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); ---Testcase 030: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); ---Testcase 031: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); ---Testcase 032: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); ---Testcase 033: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); ---Testcase 034: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); ---Testcase 035: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); ---Testcase 036: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); ---Testcase 037: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); ---Testcase 038: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); ---Testcase 039: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); ---Testcase 040: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); ---Testcase 041: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); ---Testcase 042: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); ---Testcase 046: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); ---Testcase 047: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); ---Testcase 048: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); ---Testcase 049: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); ---Testcase 050: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); ---Testcase 051: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); ---Testcase 052: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); ---Testcase 053: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); ---Testcase 054: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); ---Testcase 055: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); ---Testcase 056: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); ---Testcase 057: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); ---Testcase 058: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); ---Testcase 062: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); ---Testcase 063: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); ---Testcase 064: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); ---Testcase 065: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); ---Testcase 066: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); ---Testcase 067: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); ---Testcase 068: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); ---Testcase 069: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); ---Testcase 070: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); ---Testcase 071: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); ---Testcase 072: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); ---Testcase 073: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); ---Testcase 074: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); ---Testcase 077: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); ---Testcase 108: -SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------------+------+----+------------------------- - 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR8"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; - i | m -----+------------------------- - 63 | 00:00:00:00:00:00:00:01 - 64 | 00:00:00:00:00:00:00:02 - 65 | 00:00:00:00:00:00:00:03 - 66 | 00:00:00:00:01:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 62 | 03:00:00:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; - i | m -----+------------------------- - 62 | 03:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 66 | 00:00:00:00:01:00:00:00 - 65 | 00:00:00:00:00:00:00:03 - 64 | 00:00:00:00:00:00:00:02 - 63 | 00:00:00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); -ERROR: option "column_type" provided more than once ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDR8pk"; - col -------------------------- - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDR8pk"; ---no macaddr8 operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "type_MACADDR8+" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to server sqlite2 diff --git a/expected/16.3/types/uuid.out b/expected/16.3/types/uuid.out deleted file mode 100644 index 35a2d86c..00000000 --- a/expected/16.3/types/uuid.out +++ /dev/null @@ -1,551 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); ---Testcase 010: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; ---Testcase 011: -INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 012: -INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 013: -INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 014: -INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 015: -INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 016: -INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 017: -INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 018: -INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 019: -INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 020: -INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 021: -INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 022: -INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 023: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 024: -INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 025: -INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 026: -INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 027: -INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 029: -INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 030: -INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 031: -INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 032: -INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 033: -INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 034: -INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 035: -INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 036: -INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 037: -INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 038: -INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 039: -INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 040: -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 041: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 042: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); ---Testcase 043: -INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 044: -INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 045: -INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 046: -INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 047: -INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 048: -INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 049: -INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 050: -INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 051: -INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 052: -INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 053: -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 054: -INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 055: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 056: -CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); ---Testcase 057: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(40 rows) - ---Testcase 058: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 059: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 060: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 061: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 062: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 063: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 064: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 065: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 066: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 067: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; ---Testcase 068: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) -(3 rows) - ---Testcase 069: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 070: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) -(3 rows) - ---Testcase 071: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 072: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; ---Testcase 073: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) -(3 rows) - ---Testcase 074: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(21 rows) - ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; ---Testcase 076: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 -(1 row) - ---Testcase 077: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; ---Testcase 076: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 077: -SELECT * FROM "type_UUID+"; - i | u | t | l ----+---+---+--- -(0 rows) - ---Testcase 078: -INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); ---Testcase 079: -SELECT * FROM "type_UUID+" WHERE "i" = 41; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 -(1 row) - ---Testcase 080: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; ---Testcase 081: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 082: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 083: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 084: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) -(3 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 086: -INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); ---Testcase 087: -INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); ---Testcase 088: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 089: -SELECT * FROM "type_UUID+" WHERE "i" = 42; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 090: -SELECT * FROM "type_UUID+" WHERE "i" = 43; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 091: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); - QUERY PLAN ----------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) -(3 rows) - ---Testcase 092: -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); ---Testcase 093: -INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); ---Testcase 094: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 - 44 | | null | -(2 rows) - ---Testcase 095: -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - i | u | t | l -----+---+------+--- - 44 | | null | -(1 row) - ---Testcase 096: -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) -(3 rows) - ---Testcase 098: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) -(3 rows) - ---Testcase 100: -CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 101: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); ---Testcase 102: -INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 103: -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 104: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(2 rows) - ---Testcase 105: ERR - primary key -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) ---Testcase 106: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 107: NO ERR, but the same semantics! -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 108: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(3 rows) - ---Testcase 109: -DELETE FROM "type_UUIDpk"; ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_UUID+" -drop cascades to foreign table "type_UUIDpk" -drop cascades to server sqlite2 diff --git a/expected/17.0/types/bitstring.out b/expected/17.0/types/bitstring.out deleted file mode 100644 index d5105515..00000000 --- a/expected/17.0/types/bitstring.out +++ /dev/null @@ -1,810 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 02: -CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); ---Testcase 03: -DROP FOREIGN TABLE IF EXISTS "type_BIT+"; -NOTICE: foreign table "type_BIT+" does not exist, skipping ---Testcase 04: -CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); ---Testcase 05: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 06: type mismatch -INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 07: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); -ERROR: bit string length 1 does not match type bit(6) ---Testcase 08: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); -ERROR: bit string length 2 does not match type bit(6) ---Testcase 09: improper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); -ERROR: bit string length 3 does not match type bit(6) ---Testcase 10: -INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); ---Testcase 11: -INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); ---Testcase 12: -INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); ---Testcase 13: -INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); ---Testcase 14: type mismatch with proper data length -INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); -ERROR: column "b" is of type bit but expression is of type integer -LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 15: -SELECT * FROM "type_BIT+"; - i | b | t | l | bi ----+--------+---------+---+---- - 6 | 110110 | integer | 2 | 54 - 7 | 111001 | integer | 2 | 57 - 8 | 110000 | integer | 2 | 48 - 9 | 100001 | integer | 2 | 33 -(4 rows) - ---Testcase 16: -SELECT * FROM "type_BIT" WHERE b < '110110'; - i | b ----+-------- - 8 | 110000 - 9 | 100001 -(2 rows) - ---Testcase 17: -SELECT * FROM "type_BIT" WHERE b > '110110'; - i | b ----+-------- - 7 | 111001 -(1 row) - ---Testcase 18: -SELECT * FROM "type_BIT" WHERE b = '110110'; - i | b ----+-------- - 6 | 110110 -(1 row) - ---Testcase 20: -CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); ---Testcase 21: -DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; -NOTICE: foreign table "type_VARBIT+" does not exist, skipping ---Testcase 22: -CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); ---Testcase 23: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); ---Testcase 24: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); ---Testcase 25: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); ---Testcase 26: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); ---Testcase 27: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); ---Testcase 28: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); ---Testcase 29: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); ---Testcase 30: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); ---Testcase 31: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); ---Testcase 32: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); ---Testcase 33: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); ---Testcase 34: -SELECT * FROM "type_VARBIT+"; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 6 | 110110 | integer | 2 - 7 | 111001 | integer | 2 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(11 rows) - ---Testcase 35: -SELECT * FROM "type_VARBIT+" WHERE b < '110110'; - i | b | t | l ----+--------+---------+--- - 1 | 1 | integer | 1 - 2 | 10 | integer | 1 - 3 | 11 | integer | 1 - 4 | 100 | integer | 1 - 5 | 101 | integer | 1 - 8 | 110000 | integer | 2 - 9 | 100001 | integer | 2 -(7 rows) - ---Testcase 36: -SELECT * FROM "type_VARBIT+" WHERE b > '110110'; - i | b | t | l -----+---------------------------------------------------------------+---------+---- - 7 | 111001 | integer | 2 - 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 -(3 rows) - ---Testcase 37: -SELECT * FROM "type_VARBIT+" WHERE b = '110110'; - i | b | t | l ----+--------+---------+--- - 6 | 110110 | integer | 2 -(1 row) - ---Testcase 38: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); ---Testcase 39: -INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); ---Testcase 40: very long bit string, expected ERROR, 65 bits -INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); -ERROR: SQLite FDW dosens't support very long bit/varbit data -HINT: bit length 65, maximum 64 ---Testcase 41: -SELECT * FROM "type_VARBIT+" WHERE "i" > 10; - i | b | t | l -----+-----------------------------------------------------------------+---------+---- - 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 -(3 rows) - ---Testcase 42: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 111111 - 6 | 110110 | 8 | 110000 | 110110 - 6 | 110110 | 9 | 100001 | 110111 - 7 | 111001 | 6 | 110110 | 111111 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 111001 - 7 | 111001 | 9 | 100001 | 111001 - 8 | 110000 | 6 | 110110 | 110110 - 8 | 110000 | 7 | 111001 | 111001 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 110001 - 9 | 100001 | 6 | 110110 | 110111 - 9 | 100001 | 7 | 111001 | 111001 - 9 | 100001 | 8 | 110000 | 110001 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 43: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 110110 - 6 | 110110 | 7 | 111001 | 110000 - 6 | 110110 | 8 | 110000 | 110000 - 6 | 110110 | 9 | 100001 | 100000 - 7 | 111001 | 6 | 110110 | 110000 - 7 | 111001 | 7 | 111001 | 111001 - 7 | 111001 | 8 | 110000 | 110000 - 7 | 111001 | 9 | 100001 | 100001 - 8 | 110000 | 6 | 110110 | 110000 - 8 | 110000 | 7 | 111001 | 110000 - 8 | 110000 | 8 | 110000 | 110000 - 8 | 110000 | 9 | 100001 | 100000 - 9 | 100001 | 6 | 110110 | 100000 - 9 | 100001 | 7 | 111001 | 100001 - 9 | 100001 | 8 | 110000 | 100000 - 9 | 100001 | 9 | 100001 | 100001 -(16 rows) - ---Testcase 44: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - i₁ | b₁ | i₂ | b₂ | res -----+--------+----+--------+-------- - 6 | 110110 | 6 | 110110 | 000000 - 6 | 110110 | 7 | 111001 | 001111 - 6 | 110110 | 8 | 110000 | 000110 - 6 | 110110 | 9 | 100001 | 010111 - 7 | 111001 | 6 | 110110 | 001111 - 7 | 111001 | 7 | 111001 | 000000 - 7 | 111001 | 8 | 110000 | 001001 - 7 | 111001 | 9 | 100001 | 011000 - 8 | 110000 | 6 | 110110 | 000110 - 8 | 110000 | 7 | 111001 | 001001 - 8 | 110000 | 8 | 110000 | 000000 - 8 | 110000 | 9 | 100001 | 010001 - 9 | 100001 | 6 | 110110 | 010111 - 9 | 100001 | 7 | 111001 | 011000 - 9 | 100001 | 8 | 110000 | 010001 - 9 | 100001 | 9 | 100001 | 000000 -(16 rows) - ---Testcase 45: -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 46: -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 -(4 rows) - ---Testcase 47: -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 -(4 rows) - ---Testcase 48: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 49: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 50: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; - QUERY PLAN --------------------------------------------------------------------------------------------- - Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) - Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) - -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" - -> Materialize (cost=10.00..2225.07 rows=2214 width=13) - Output: b2.i, b2.b - -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(10 rows) - ---Testcase 51: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 52: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (b << 3) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 53: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) - Output: i, b, (~ b) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(3 rows) - ---Testcase 54: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot OR bit strings of different sizes ---Testcase 55: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot AND bit strings of different sizes ---Testcase 56: -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; -ERROR: cannot XOR bit strings of different sizes ---Testcase 57: -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 001 - 5 | 101 | 001 - 6 | 110110 | 001101 - 7 | 111001 | 001110 - 8 | 110000 | 001100 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 -(13 rows) - ---Testcase 58: -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 00 - 3 | 11 | 00 - 4 | 100 | 000 - 5 | 101 | 000 - 6 | 110110 | 110000 - 7 | 111001 | 001000 - 8 | 110000 | 000000 - 9 | 100001 | 001000 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 -(13 rows) - ---Testcase 59: -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - i | b | res -----+-----------------------------------------------------------------+----------------------------------------------------------------- - 1 | 1 | 0 - 2 | 10 | 01 - 3 | 11 | 00 - 4 | 100 | 011 - 5 | 101 | 010 - 6 | 110110 | 001001 - 7 | 111001 | 000110 - 8 | 110000 | 001111 - 9 | 100001 | 011110 - 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 - 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 - 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 - 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 -(13 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 61: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 62: -EXPLAIN VERBOSE -SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; - QUERY PLAN ------------------------------------------------------------------------------------------------ - Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) - Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") - -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) - Output: b1.i, b1.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" - -> Materialize (cost=10.00..1829.10 rows=1820 width=21) - Output: b2.i, b2.b - -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) - Output: b2.i, b2.b - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(10 rows) - ---Testcase 63: -EXPLAIN VERBOSE -SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" >> 2) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 64: -EXPLAIN VERBOSE -SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, ((b)::"bit" << 3) - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 65: -EXPLAIN VERBOSE -SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) - Output: i, b, (~ (b)::"bit") - SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" -(3 rows) - ---Testcase 66: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 67: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 68: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 69: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 70: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 71: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 72: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 73: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 74: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 75: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 76: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 77: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 78: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 79: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 80: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 81: -SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 100010 - 7 | 111001 | 101001 - 8 | 110000 | 100000 - 9 | 100001 | 100001 -(4 rows) - ---Testcase 82: -SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 111111 - 7 | 111001 | 111011 - 8 | 110000 | 111011 - 9 | 100001 | 101011 -(4 rows) - ---Testcase 83: -SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; - i | b | res ----+--------+-------- - 6 | 110110 | 011101 - 7 | 111001 | 010010 - 8 | 110000 | 011011 - 9 | 100001 | 001010 -(4 rows) - ---Testcase 84: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 85: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 86: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 87: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 88: -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 89: -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - i | b ----+-------- - 6 | 110110 - 7 | 111001 - 8 | 110000 - 9 | 100001 -(4 rows) - ---Testcase 90: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) -(3 rows) - ---Testcase 91: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) -(3 rows) - ---Testcase 92: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------ - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) - SQLite query: SELECT `i`, `b` FROM main."type_BIT" -(4 rows) - ---Testcase 93: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) -(3 rows) - ---Testcase 94: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) -(3 rows) - ---Testcase 95: -EXPLAIN VERBOSE -SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) - Output: i, b - SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) -(3 rows) - ---Testcase 005: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BIT" -drop cascades to foreign table "type_BIT+" -drop cascades to foreign table "type_VARBIT" -drop cascades to foreign table "type_VARBIT+" -drop cascades to server sqlite2 diff --git a/expected/17.0/types/bool.out b/expected/17.0/types/bool.out deleted file mode 100644 index 814110a1..00000000 --- a/expected/17.0/types/bool.out +++ /dev/null @@ -1,1276 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 000: -CREATE EXTENSION sqlite_fdw; ---Testcase 001: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 01: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; ---Testcase 02: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); ---Testcase 03: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); ---Testcase 04: -CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); ---Testcase 05: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; ---Testcase 06: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); ---Testcase 07: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); ---Testcase 08: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); ---Testcase 09: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); ---Testcase 10: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); ---Testcase 11: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); ---Testcase 12: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); ---Testcase 13: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); ---Testcase 14: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); ---Testcase 15: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); ---Testcase 16: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); ---Testcase 17: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); ---Testcase 18: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); ---Testcase 19: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); ---Testcase 20: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); ---Testcase 21: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); ---Testcase 22: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); ---Testcase 23: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); ---Testcase 24: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); ---Testcase 25: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); ---Testcase 26: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); ---Testcase 27: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); ---Testcase 28: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); ---Testcase 29: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); ---Testcase 30: -SELECT * FROM "type_BOOLEAN"; - i | b -----+------- - 1 | 1 - 2 | 0 - 3 | true - 4 | false - 5 | true - 6 | false - 7 | Yes - 8 | YeS - 9 | yes - 10 | no - 11 | No - 12 | nO - 13 | off - 14 | oFf - 15 | on - 16 | ON - 17 | t - 18 | T - 19 | Y - 20 | y - 21 | F - 22 | f - 23 | x - 24 | 0 - 25 | 1 - 26 | -(26 rows) - ---Testcase 31: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 32: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN"; - QUERY PLAN ---------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN" - Output: i, b - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" -(3 rows) - ---Testcase 33: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_BOOLEAN+"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" - Output: i, b, t, l - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 34: ERR - invalid text affinity because not ISO:SQL text input -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "text" affinity (1 bytes) : 'x' -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 35 -DELETE FROM "type_BOOLEAN" WHERE i = 23; ---Testcase 36: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 37: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; - i | b | t | l -----+---+------+--- - 26 | | null | -(1 row) - ---Testcase 38: -SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 -(24 rows) - ---Testcase 39: -SELECT * FROM "type_BOOLEAN+" WHERE b; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 3 | t | text | 4 - 5 | t | text | 4 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 25 | t | integer | 1 -(13 rows) - ---Testcase 40: -SELECT * FROM "type_BOOLEAN+" WHERE NOT b; - i | b | t | l -----+---+---------+--- - 2 | f | integer | 1 - 4 | f | text | 5 - 6 | f | text | 5 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 -(11 rows) - ---Testcase 41: -CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 42: -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); ---Testcase 43: -INSERT INTO "type_BOOLEANpk" VALUES (FALSE); ---Testcase 44: ERR - primary key -INSERT INTO "type_BOOLEANpk" VALUES (TRUE); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) ---Testcase 45: -DELETE FROM "type_BOOLEANpk"; ---Testcase 46: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; ---Testcase 47: -INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); ---Testcase 48: -ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; ---Testcase 49: ERR - invalid float for bool column -SELECT * FROM "type_BOOLEAN+"; -ERROR: SQLite value is not compatible with PostgreSQL column data type -HINT: SQLite value with "real" affinity : 3.14159265358979 -CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column ---Testcase 50 -DELETE FROM "type_BOOLEAN" WHERE i = 27; ---Testcase 51: -SELECT * FROM "type_BOOLEAN+"; - i | b | t | l -----+---+---------+--- - 1 | t | integer | 1 - 2 | f | integer | 1 - 3 | t | text | 4 - 4 | f | text | 5 - 5 | t | text | 4 - 6 | f | text | 5 - 7 | t | text | 3 - 8 | t | text | 3 - 9 | t | text | 3 - 10 | f | text | 2 - 11 | f | text | 2 - 12 | f | text | 2 - 13 | f | text | 3 - 14 | f | text | 3 - 15 | t | text | 2 - 16 | t | text | 2 - 17 | t | text | 1 - 18 | t | text | 1 - 19 | t | text | 1 - 20 | t | text | 1 - 21 | f | text | 1 - 22 | f | text | 1 - 24 | f | integer | 1 - 25 | t | integer | 1 - 26 | | null | -(25 rows) - ---Testcase 52: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE b; - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 53: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; - QUERY PLAN ----------------------------------------------------------------------------------------------------- - Update on public."type_BOOLEAN" - -> Foreign Update on public."type_BOOLEAN" - SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 54: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE b; - QUERY PLAN ------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) -(3 rows) - ---Testcase 55: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN" WHERE NOT b; - QUERY PLAN ------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN" - -> Foreign Delete on public."type_BOOLEAN" - SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) -(3 rows) - ---Testcase 56: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."type_BOOLEAN+" b - Output: i, b, t, l, (NOT b) - SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" -(3 rows) - ---Testcase 57: -SELECT *, NOT b nb FROM "type_BOOLEAN+" b; - i | b | t | l | nb -----+---+---------+---+---- - 1 | t | integer | 1 | f - 2 | f | integer | 1 | t - 3 | t | text | 4 | f - 4 | f | text | 5 | t - 5 | t | text | 4 | f - 6 | f | text | 5 | t - 7 | t | text | 3 | f - 8 | t | text | 3 | f - 9 | t | text | 3 | f - 10 | f | text | 2 | t - 11 | f | text | 2 | t - 12 | f | text | 2 | t - 13 | f | text | 3 | t - 14 | f | text | 3 | t - 15 | t | text | 2 | f - 16 | t | text | 2 | f - 17 | t | text | 1 | f - 18 | t | text | 1 | f - 19 | t | text | 1 | f - 20 | t | text | 1 | f - 21 | f | text | 1 | t - 22 | f | text | 1 | t - 24 | f | integer | 1 | t - 25 | t | integer | 1 | f - 26 | | null | | -(25 rows) - ---Testcase 58: -CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); ---Testcase 59: see INIT.SQL with mixed affinity boolean data -SELECT * FROM "type_BOOLEAN_oper"; - i | i1 | b1 | i2 | b2 ------+----+----+----+---- - 1 | 1 | t | 1 | t - 2 | 1 | t | 2 | t - 3 | 1 | t | 3 | t - 4 | 1 | t | 4 | t - 5 | 1 | t | 5 | t - 6 | 1 | t | 6 | t - 7 | 1 | t | 7 | t - 8 | 1 | t | 8 | t - 9 | 1 | t | 9 | t - 10 | 1 | t | 10 | t - 11 | 1 | t | 11 | t - 12 | 1 | t | 12 | t - 13 | 1 | t | 13 | t - 14 | 1 | t | 14 | f - 15 | 1 | t | 15 | f - 16 | 1 | t | 16 | f - 17 | 1 | t | 17 | f - 18 | 1 | t | 18 | f - 19 | 1 | t | 19 | f - 20 | 1 | t | 20 | f - 21 | 1 | t | 21 | f - 22 | 1 | t | 22 | f - 23 | 1 | t | 23 | f - 24 | 1 | t | 24 | f - 25 | 1 | t | 25 | f - 26 | 1 | t | 26 | f - 27 | 1 | t | 27 | - 28 | 2 | t | 1 | t - 29 | 2 | t | 2 | t - 30 | 2 | t | 3 | t - 31 | 2 | t | 4 | t - 32 | 2 | t | 5 | t - 33 | 2 | t | 6 | t - 34 | 2 | t | 7 | t - 35 | 2 | t | 8 | t - 36 | 2 | t | 9 | t - 37 | 2 | t | 10 | t - 38 | 2 | t | 11 | t - 39 | 2 | t | 12 | t - 40 | 2 | t | 13 | t - 41 | 2 | t | 14 | f - 42 | 2 | t | 15 | f - 43 | 2 | t | 16 | f - 44 | 2 | t | 17 | f - 45 | 2 | t | 18 | f - 46 | 2 | t | 19 | f - 47 | 2 | t | 20 | f - 48 | 2 | t | 21 | f - 49 | 2 | t | 22 | f - 50 | 2 | t | 23 | f - 51 | 2 | t | 24 | f - 52 | 2 | t | 25 | f - 53 | 2 | t | 26 | f - 54 | 2 | t | 27 | - 55 | 3 | t | 1 | t - 56 | 3 | t | 2 | t - 57 | 3 | t | 3 | t - 58 | 3 | t | 4 | t - 59 | 3 | t | 5 | t - 60 | 3 | t | 6 | t - 61 | 3 | t | 7 | t - 62 | 3 | t | 8 | t - 63 | 3 | t | 9 | t - 64 | 3 | t | 10 | t - 65 | 3 | t | 11 | t - 66 | 3 | t | 12 | t - 67 | 3 | t | 13 | t - 68 | 3 | t | 14 | f - 69 | 3 | t | 15 | f - 70 | 3 | t | 16 | f - 71 | 3 | t | 17 | f - 72 | 3 | t | 18 | f - 73 | 3 | t | 19 | f - 74 | 3 | t | 20 | f - 75 | 3 | t | 21 | f - 76 | 3 | t | 22 | f - 77 | 3 | t | 23 | f - 78 | 3 | t | 24 | f - 79 | 3 | t | 25 | f - 80 | 3 | t | 26 | f - 81 | 3 | t | 27 | - 82 | 4 | t | 1 | t - 83 | 4 | t | 2 | t - 84 | 4 | t | 3 | t - 85 | 4 | t | 4 | t - 86 | 4 | t | 5 | t - 87 | 4 | t | 6 | t - 88 | 4 | t | 7 | t - 89 | 4 | t | 8 | t - 90 | 4 | t | 9 | t - 91 | 4 | t | 10 | t - 92 | 4 | t | 11 | t - 93 | 4 | t | 12 | t - 94 | 4 | t | 13 | t - 95 | 4 | t | 14 | f - 96 | 4 | t | 15 | f - 97 | 4 | t | 16 | f - 98 | 4 | t | 17 | f - 99 | 4 | t | 18 | f - 100 | 4 | t | 19 | f - 101 | 4 | t | 20 | f - 102 | 4 | t | 21 | f - 103 | 4 | t | 22 | f - 104 | 4 | t | 23 | f - 105 | 4 | t | 24 | f - 106 | 4 | t | 25 | f - 107 | 4 | t | 26 | f - 108 | 4 | t | 27 | - 109 | 5 | t | 1 | t - 110 | 5 | t | 2 | t - 111 | 5 | t | 3 | t - 112 | 5 | t | 4 | t - 113 | 5 | t | 5 | t - 114 | 5 | t | 6 | t - 115 | 5 | t | 7 | t - 116 | 5 | t | 8 | t - 117 | 5 | t | 9 | t - 118 | 5 | t | 10 | t - 119 | 5 | t | 11 | t - 120 | 5 | t | 12 | t - 121 | 5 | t | 13 | t - 122 | 5 | t | 14 | f - 123 | 5 | t | 15 | f - 124 | 5 | t | 16 | f - 125 | 5 | t | 17 | f - 126 | 5 | t | 18 | f - 127 | 5 | t | 19 | f - 128 | 5 | t | 20 | f - 129 | 5 | t | 21 | f - 130 | 5 | t | 22 | f - 131 | 5 | t | 23 | f - 132 | 5 | t | 24 | f - 133 | 5 | t | 25 | f - 134 | 5 | t | 26 | f - 135 | 5 | t | 27 | - 136 | 6 | t | 1 | t - 137 | 6 | t | 2 | t - 138 | 6 | t | 3 | t - 139 | 6 | t | 4 | t - 140 | 6 | t | 5 | t - 141 | 6 | t | 6 | t - 142 | 6 | t | 7 | t - 143 | 6 | t | 8 | t - 144 | 6 | t | 9 | t - 145 | 6 | t | 10 | t - 146 | 6 | t | 11 | t - 147 | 6 | t | 12 | t - 148 | 6 | t | 13 | t - 149 | 6 | t | 14 | f - 150 | 6 | t | 15 | f - 151 | 6 | t | 16 | f - 152 | 6 | t | 17 | f - 153 | 6 | t | 18 | f - 154 | 6 | t | 19 | f - 155 | 6 | t | 20 | f - 156 | 6 | t | 21 | f - 157 | 6 | t | 22 | f - 158 | 6 | t | 23 | f - 159 | 6 | t | 24 | f - 160 | 6 | t | 25 | f - 161 | 6 | t | 26 | f - 162 | 6 | t | 27 | - 163 | 7 | t | 1 | t - 164 | 7 | t | 2 | t - 165 | 7 | t | 3 | t - 166 | 7 | t | 4 | t - 167 | 7 | t | 5 | t - 168 | 7 | t | 6 | t - 169 | 7 | t | 7 | t - 170 | 7 | t | 8 | t - 171 | 7 | t | 9 | t - 172 | 7 | t | 10 | t - 173 | 7 | t | 11 | t - 174 | 7 | t | 12 | t - 175 | 7 | t | 13 | t - 176 | 7 | t | 14 | f - 177 | 7 | t | 15 | f - 178 | 7 | t | 16 | f - 179 | 7 | t | 17 | f - 180 | 7 | t | 18 | f - 181 | 7 | t | 19 | f - 182 | 7 | t | 20 | f - 183 | 7 | t | 21 | f - 184 | 7 | t | 22 | f - 185 | 7 | t | 23 | f - 186 | 7 | t | 24 | f - 187 | 7 | t | 25 | f - 188 | 7 | t | 26 | f - 189 | 7 | t | 27 | - 190 | 8 | t | 1 | t - 191 | 8 | t | 2 | t - 192 | 8 | t | 3 | t - 193 | 8 | t | 4 | t - 194 | 8 | t | 5 | t - 195 | 8 | t | 6 | t - 196 | 8 | t | 7 | t - 197 | 8 | t | 8 | t - 198 | 8 | t | 9 | t - 199 | 8 | t | 10 | t - 200 | 8 | t | 11 | t - 201 | 8 | t | 12 | t - 202 | 8 | t | 13 | t - 203 | 8 | t | 14 | f - 204 | 8 | t | 15 | f - 205 | 8 | t | 16 | f - 206 | 8 | t | 17 | f - 207 | 8 | t | 18 | f - 208 | 8 | t | 19 | f - 209 | 8 | t | 20 | f - 210 | 8 | t | 21 | f - 211 | 8 | t | 22 | f - 212 | 8 | t | 23 | f - 213 | 8 | t | 24 | f - 214 | 8 | t | 25 | f - 215 | 8 | t | 26 | f - 216 | 8 | t | 27 | - 217 | 9 | t | 1 | t - 218 | 9 | t | 2 | t - 219 | 9 | t | 3 | t - 220 | 9 | t | 4 | t - 221 | 9 | t | 5 | t - 222 | 9 | t | 6 | t - 223 | 9 | t | 7 | t - 224 | 9 | t | 8 | t - 225 | 9 | t | 9 | t - 226 | 9 | t | 10 | t - 227 | 9 | t | 11 | t - 228 | 9 | t | 12 | t - 229 | 9 | t | 13 | t - 230 | 9 | t | 14 | f - 231 | 9 | t | 15 | f - 232 | 9 | t | 16 | f - 233 | 9 | t | 17 | f - 234 | 9 | t | 18 | f - 235 | 9 | t | 19 | f - 236 | 9 | t | 20 | f - 237 | 9 | t | 21 | f - 238 | 9 | t | 22 | f - 239 | 9 | t | 23 | f - 240 | 9 | t | 24 | f - 241 | 9 | t | 25 | f - 242 | 9 | t | 26 | f - 243 | 9 | t | 27 | - 244 | 10 | t | 1 | t - 245 | 10 | t | 2 | t - 246 | 10 | t | 3 | t - 247 | 10 | t | 4 | t - 248 | 10 | t | 5 | t - 249 | 10 | t | 6 | t - 250 | 10 | t | 7 | t - 251 | 10 | t | 8 | t - 252 | 10 | t | 9 | t - 253 | 10 | t | 10 | t - 254 | 10 | t | 11 | t - 255 | 10 | t | 12 | t - 256 | 10 | t | 13 | t - 257 | 10 | t | 14 | f - 258 | 10 | t | 15 | f - 259 | 10 | t | 16 | f - 260 | 10 | t | 17 | f - 261 | 10 | t | 18 | f - 262 | 10 | t | 19 | f - 263 | 10 | t | 20 | f - 264 | 10 | t | 21 | f - 265 | 10 | t | 22 | f - 266 | 10 | t | 23 | f - 267 | 10 | t | 24 | f - 268 | 10 | t | 25 | f - 269 | 10 | t | 26 | f - 270 | 10 | t | 27 | - 271 | 11 | t | 1 | t - 272 | 11 | t | 2 | t - 273 | 11 | t | 3 | t - 274 | 11 | t | 4 | t - 275 | 11 | t | 5 | t - 276 | 11 | t | 6 | t - 277 | 11 | t | 7 | t - 278 | 11 | t | 8 | t - 279 | 11 | t | 9 | t - 280 | 11 | t | 10 | t - 281 | 11 | t | 11 | t - 282 | 11 | t | 12 | t - 283 | 11 | t | 13 | t - 284 | 11 | t | 14 | f - 285 | 11 | t | 15 | f - 286 | 11 | t | 16 | f - 287 | 11 | t | 17 | f - 288 | 11 | t | 18 | f - 289 | 11 | t | 19 | f - 290 | 11 | t | 20 | f - 291 | 11 | t | 21 | f - 292 | 11 | t | 22 | f - 293 | 11 | t | 23 | f - 294 | 11 | t | 24 | f - 295 | 11 | t | 25 | f - 296 | 11 | t | 26 | f - 297 | 11 | t | 27 | - 298 | 12 | t | 1 | t - 299 | 12 | t | 2 | t - 300 | 12 | t | 3 | t - 301 | 12 | t | 4 | t - 302 | 12 | t | 5 | t - 303 | 12 | t | 6 | t - 304 | 12 | t | 7 | t - 305 | 12 | t | 8 | t - 306 | 12 | t | 9 | t - 307 | 12 | t | 10 | t - 308 | 12 | t | 11 | t - 309 | 12 | t | 12 | t - 310 | 12 | t | 13 | t - 311 | 12 | t | 14 | f - 312 | 12 | t | 15 | f - 313 | 12 | t | 16 | f - 314 | 12 | t | 17 | f - 315 | 12 | t | 18 | f - 316 | 12 | t | 19 | f - 317 | 12 | t | 20 | f - 318 | 12 | t | 21 | f - 319 | 12 | t | 22 | f - 320 | 12 | t | 23 | f - 321 | 12 | t | 24 | f - 322 | 12 | t | 25 | f - 323 | 12 | t | 26 | f - 324 | 12 | t | 27 | - 325 | 13 | t | 1 | t - 326 | 13 | t | 2 | t - 327 | 13 | t | 3 | t - 328 | 13 | t | 4 | t - 329 | 13 | t | 5 | t - 330 | 13 | t | 6 | t - 331 | 13 | t | 7 | t - 332 | 13 | t | 8 | t - 333 | 13 | t | 9 | t - 334 | 13 | t | 10 | t - 335 | 13 | t | 11 | t - 336 | 13 | t | 12 | t - 337 | 13 | t | 13 | t - 338 | 13 | t | 14 | f - 339 | 13 | t | 15 | f - 340 | 13 | t | 16 | f - 341 | 13 | t | 17 | f - 342 | 13 | t | 18 | f - 343 | 13 | t | 19 | f - 344 | 13 | t | 20 | f - 345 | 13 | t | 21 | f - 346 | 13 | t | 22 | f - 347 | 13 | t | 23 | f - 348 | 13 | t | 24 | f - 349 | 13 | t | 25 | f - 350 | 13 | t | 26 | f - 351 | 13 | t | 27 | - 352 | 14 | f | 1 | t - 353 | 14 | f | 2 | t - 354 | 14 | f | 3 | t - 355 | 14 | f | 4 | t - 356 | 14 | f | 5 | t - 357 | 14 | f | 6 | t - 358 | 14 | f | 7 | t - 359 | 14 | f | 8 | t - 360 | 14 | f | 9 | t - 361 | 14 | f | 10 | t - 362 | 14 | f | 11 | t - 363 | 14 | f | 12 | t - 364 | 14 | f | 13 | t - 365 | 14 | f | 14 | f - 366 | 14 | f | 15 | f - 367 | 14 | f | 16 | f - 368 | 14 | f | 17 | f - 369 | 14 | f | 18 | f - 370 | 14 | f | 19 | f - 371 | 14 | f | 20 | f - 372 | 14 | f | 21 | f - 373 | 14 | f | 22 | f - 374 | 14 | f | 23 | f - 375 | 14 | f | 24 | f - 376 | 14 | f | 25 | f - 377 | 14 | f | 26 | f - 378 | 14 | f | 27 | - 379 | 15 | f | 1 | t - 380 | 15 | f | 2 | t - 381 | 15 | f | 3 | t - 382 | 15 | f | 4 | t - 383 | 15 | f | 5 | t - 384 | 15 | f | 6 | t - 385 | 15 | f | 7 | t - 386 | 15 | f | 8 | t - 387 | 15 | f | 9 | t - 388 | 15 | f | 10 | t - 389 | 15 | f | 11 | t - 390 | 15 | f | 12 | t - 391 | 15 | f | 13 | t - 392 | 15 | f | 14 | f - 393 | 15 | f | 15 | f - 394 | 15 | f | 16 | f - 395 | 15 | f | 17 | f - 396 | 15 | f | 18 | f - 397 | 15 | f | 19 | f - 398 | 15 | f | 20 | f - 399 | 15 | f | 21 | f - 400 | 15 | f | 22 | f - 401 | 15 | f | 23 | f - 402 | 15 | f | 24 | f - 403 | 15 | f | 25 | f - 404 | 15 | f | 26 | f - 405 | 15 | f | 27 | - 406 | 16 | f | 1 | t - 407 | 16 | f | 2 | t - 408 | 16 | f | 3 | t - 409 | 16 | f | 4 | t - 410 | 16 | f | 5 | t - 411 | 16 | f | 6 | t - 412 | 16 | f | 7 | t - 413 | 16 | f | 8 | t - 414 | 16 | f | 9 | t - 415 | 16 | f | 10 | t - 416 | 16 | f | 11 | t - 417 | 16 | f | 12 | t - 418 | 16 | f | 13 | t - 419 | 16 | f | 14 | f - 420 | 16 | f | 15 | f - 421 | 16 | f | 16 | f - 422 | 16 | f | 17 | f - 423 | 16 | f | 18 | f - 424 | 16 | f | 19 | f - 425 | 16 | f | 20 | f - 426 | 16 | f | 21 | f - 427 | 16 | f | 22 | f - 428 | 16 | f | 23 | f - 429 | 16 | f | 24 | f - 430 | 16 | f | 25 | f - 431 | 16 | f | 26 | f - 432 | 16 | f | 27 | - 433 | 17 | f | 1 | t - 434 | 17 | f | 2 | t - 435 | 17 | f | 3 | t - 436 | 17 | f | 4 | t - 437 | 17 | f | 5 | t - 438 | 17 | f | 6 | t - 439 | 17 | f | 7 | t - 440 | 17 | f | 8 | t - 441 | 17 | f | 9 | t - 442 | 17 | f | 10 | t - 443 | 17 | f | 11 | t - 444 | 17 | f | 12 | t - 445 | 17 | f | 13 | t - 446 | 17 | f | 14 | f - 447 | 17 | f | 15 | f - 448 | 17 | f | 16 | f - 449 | 17 | f | 17 | f - 450 | 17 | f | 18 | f - 451 | 17 | f | 19 | f - 452 | 17 | f | 20 | f - 453 | 17 | f | 21 | f - 454 | 17 | f | 22 | f - 455 | 17 | f | 23 | f - 456 | 17 | f | 24 | f - 457 | 17 | f | 25 | f - 458 | 17 | f | 26 | f - 459 | 17 | f | 27 | - 460 | 18 | f | 1 | t - 461 | 18 | f | 2 | t - 462 | 18 | f | 3 | t - 463 | 18 | f | 4 | t - 464 | 18 | f | 5 | t - 465 | 18 | f | 6 | t - 466 | 18 | f | 7 | t - 467 | 18 | f | 8 | t - 468 | 18 | f | 9 | t - 469 | 18 | f | 10 | t - 470 | 18 | f | 11 | t - 471 | 18 | f | 12 | t - 472 | 18 | f | 13 | t - 473 | 18 | f | 14 | f - 474 | 18 | f | 15 | f - 475 | 18 | f | 16 | f - 476 | 18 | f | 17 | f - 477 | 18 | f | 18 | f - 478 | 18 | f | 19 | f - 479 | 18 | f | 20 | f - 480 | 18 | f | 21 | f - 481 | 18 | f | 22 | f - 482 | 18 | f | 23 | f - 483 | 18 | f | 24 | f - 484 | 18 | f | 25 | f - 485 | 18 | f | 26 | f - 486 | 18 | f | 27 | - 487 | 19 | f | 1 | t - 488 | 19 | f | 2 | t - 489 | 19 | f | 3 | t - 490 | 19 | f | 4 | t - 491 | 19 | f | 5 | t - 492 | 19 | f | 6 | t - 493 | 19 | f | 7 | t - 494 | 19 | f | 8 | t - 495 | 19 | f | 9 | t - 496 | 19 | f | 10 | t - 497 | 19 | f | 11 | t - 498 | 19 | f | 12 | t - 499 | 19 | f | 13 | t - 500 | 19 | f | 14 | f - 501 | 19 | f | 15 | f - 502 | 19 | f | 16 | f - 503 | 19 | f | 17 | f - 504 | 19 | f | 18 | f - 505 | 19 | f | 19 | f - 506 | 19 | f | 20 | f - 507 | 19 | f | 21 | f - 508 | 19 | f | 22 | f - 509 | 19 | f | 23 | f - 510 | 19 | f | 24 | f - 511 | 19 | f | 25 | f - 512 | 19 | f | 26 | f - 513 | 19 | f | 27 | - 514 | 20 | f | 1 | t - 515 | 20 | f | 2 | t - 516 | 20 | f | 3 | t - 517 | 20 | f | 4 | t - 518 | 20 | f | 5 | t - 519 | 20 | f | 6 | t - 520 | 20 | f | 7 | t - 521 | 20 | f | 8 | t - 522 | 20 | f | 9 | t - 523 | 20 | f | 10 | t - 524 | 20 | f | 11 | t - 525 | 20 | f | 12 | t - 526 | 20 | f | 13 | t - 527 | 20 | f | 14 | f - 528 | 20 | f | 15 | f - 529 | 20 | f | 16 | f - 530 | 20 | f | 17 | f - 531 | 20 | f | 18 | f - 532 | 20 | f | 19 | f - 533 | 20 | f | 20 | f - 534 | 20 | f | 21 | f - 535 | 20 | f | 22 | f - 536 | 20 | f | 23 | f - 537 | 20 | f | 24 | f - 538 | 20 | f | 25 | f - 539 | 20 | f | 26 | f - 540 | 20 | f | 27 | - 541 | 21 | f | 1 | t - 542 | 21 | f | 2 | t - 543 | 21 | f | 3 | t - 544 | 21 | f | 4 | t - 545 | 21 | f | 5 | t - 546 | 21 | f | 6 | t - 547 | 21 | f | 7 | t - 548 | 21 | f | 8 | t - 549 | 21 | f | 9 | t - 550 | 21 | f | 10 | t - 551 | 21 | f | 11 | t - 552 | 21 | f | 12 | t - 553 | 21 | f | 13 | t - 554 | 21 | f | 14 | f - 555 | 21 | f | 15 | f - 556 | 21 | f | 16 | f - 557 | 21 | f | 17 | f - 558 | 21 | f | 18 | f - 559 | 21 | f | 19 | f - 560 | 21 | f | 20 | f - 561 | 21 | f | 21 | f - 562 | 21 | f | 22 | f - 563 | 21 | f | 23 | f - 564 | 21 | f | 24 | f - 565 | 21 | f | 25 | f - 566 | 21 | f | 26 | f - 567 | 21 | f | 27 | - 568 | 22 | f | 1 | t - 569 | 22 | f | 2 | t - 570 | 22 | f | 3 | t - 571 | 22 | f | 4 | t - 572 | 22 | f | 5 | t - 573 | 22 | f | 6 | t - 574 | 22 | f | 7 | t - 575 | 22 | f | 8 | t - 576 | 22 | f | 9 | t - 577 | 22 | f | 10 | t - 578 | 22 | f | 11 | t - 579 | 22 | f | 12 | t - 580 | 22 | f | 13 | t - 581 | 22 | f | 14 | f - 582 | 22 | f | 15 | f - 583 | 22 | f | 16 | f - 584 | 22 | f | 17 | f - 585 | 22 | f | 18 | f - 586 | 22 | f | 19 | f - 587 | 22 | f | 20 | f - 588 | 22 | f | 21 | f - 589 | 22 | f | 22 | f - 590 | 22 | f | 23 | f - 591 | 22 | f | 24 | f - 592 | 22 | f | 25 | f - 593 | 22 | f | 26 | f - 594 | 22 | f | 27 | - 595 | 23 | f | 1 | t - 596 | 23 | f | 2 | t - 597 | 23 | f | 3 | t - 598 | 23 | f | 4 | t - 599 | 23 | f | 5 | t - 600 | 23 | f | 6 | t - 601 | 23 | f | 7 | t - 602 | 23 | f | 8 | t - 603 | 23 | f | 9 | t - 604 | 23 | f | 10 | t - 605 | 23 | f | 11 | t - 606 | 23 | f | 12 | t - 607 | 23 | f | 13 | t - 608 | 23 | f | 14 | f - 609 | 23 | f | 15 | f - 610 | 23 | f | 16 | f - 611 | 23 | f | 17 | f - 612 | 23 | f | 18 | f - 613 | 23 | f | 19 | f - 614 | 23 | f | 20 | f - 615 | 23 | f | 21 | f - 616 | 23 | f | 22 | f - 617 | 23 | f | 23 | f - 618 | 23 | f | 24 | f - 619 | 23 | f | 25 | f - 620 | 23 | f | 26 | f - 621 | 23 | f | 27 | - 622 | 24 | f | 1 | t - 623 | 24 | f | 2 | t - 624 | 24 | f | 3 | t - 625 | 24 | f | 4 | t - 626 | 24 | f | 5 | t - 627 | 24 | f | 6 | t - 628 | 24 | f | 7 | t - 629 | 24 | f | 8 | t - 630 | 24 | f | 9 | t - 631 | 24 | f | 10 | t - 632 | 24 | f | 11 | t - 633 | 24 | f | 12 | t - 634 | 24 | f | 13 | t - 635 | 24 | f | 14 | f - 636 | 24 | f | 15 | f - 637 | 24 | f | 16 | f - 638 | 24 | f | 17 | f - 639 | 24 | f | 18 | f - 640 | 24 | f | 19 | f - 641 | 24 | f | 20 | f - 642 | 24 | f | 21 | f - 643 | 24 | f | 22 | f - 644 | 24 | f | 23 | f - 645 | 24 | f | 24 | f - 646 | 24 | f | 25 | f - 647 | 24 | f | 26 | f - 648 | 24 | f | 27 | - 649 | 25 | f | 1 | t - 650 | 25 | f | 2 | t - 651 | 25 | f | 3 | t - 652 | 25 | f | 4 | t - 653 | 25 | f | 5 | t - 654 | 25 | f | 6 | t - 655 | 25 | f | 7 | t - 656 | 25 | f | 8 | t - 657 | 25 | f | 9 | t - 658 | 25 | f | 10 | t - 659 | 25 | f | 11 | t - 660 | 25 | f | 12 | t - 661 | 25 | f | 13 | t - 662 | 25 | f | 14 | f - 663 | 25 | f | 15 | f - 664 | 25 | f | 16 | f - 665 | 25 | f | 17 | f - 666 | 25 | f | 18 | f - 667 | 25 | f | 19 | f - 668 | 25 | f | 20 | f - 669 | 25 | f | 21 | f - 670 | 25 | f | 22 | f - 671 | 25 | f | 23 | f - 672 | 25 | f | 24 | f - 673 | 25 | f | 25 | f - 674 | 25 | f | 26 | f - 675 | 25 | f | 27 | - 676 | 26 | f | 1 | t - 677 | 26 | f | 2 | t - 678 | 26 | f | 3 | t - 679 | 26 | f | 4 | t - 680 | 26 | f | 5 | t - 681 | 26 | f | 6 | t - 682 | 26 | f | 7 | t - 683 | 26 | f | 8 | t - 684 | 26 | f | 9 | t - 685 | 26 | f | 10 | t - 686 | 26 | f | 11 | t - 687 | 26 | f | 12 | t - 688 | 26 | f | 13 | t - 689 | 26 | f | 14 | f - 690 | 26 | f | 15 | f - 691 | 26 | f | 16 | f - 692 | 26 | f | 17 | f - 693 | 26 | f | 18 | f - 694 | 26 | f | 19 | f - 695 | 26 | f | 20 | f - 696 | 26 | f | 21 | f - 697 | 26 | f | 22 | f - 698 | 26 | f | 23 | f - 699 | 26 | f | 24 | f - 700 | 26 | f | 25 | f - 701 | 26 | f | 26 | f - 702 | 26 | f | 27 | - 703 | 27 | | 1 | t - 704 | 27 | | 2 | t - 705 | 27 | | 3 | t - 706 | 27 | | 4 | t - 707 | 27 | | 5 | t - 708 | 27 | | 6 | t - 709 | 27 | | 7 | t - 710 | 27 | | 8 | t - 711 | 27 | | 9 | t - 712 | 27 | | 10 | t - 713 | 27 | | 11 | t - 714 | 27 | | 12 | t - 715 | 27 | | 13 | t - 716 | 27 | | 14 | f - 717 | 27 | | 15 | f - 718 | 27 | | 16 | f - 719 | 27 | | 17 | f - 720 | 27 | | 18 | f - 721 | 27 | | 19 | f - 722 | 27 | | 20 | f - 723 | 27 | | 21 | f - 724 | 27 | | 22 | f - 725 | 27 | | 23 | f - 726 | 27 | | 24 | f - 727 | 27 | | 25 | f - 728 | 27 | | 26 | f - 729 | 27 | | 27 | -(729 rows) - ---Testcase 60: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 61: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; - b1 | b2 | a | o -----+----+---+--- - f | f | f | f - f | t | f | t - f | | f | - t | f | f | t - t | t | t | t - t | | | t - | f | f | - | t | | t - | | | -(9 rows) - ---Testcase 62: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 63: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; - b1 | b2 | a | o -----+----+---+--- - t | t | t | t -(1 row) - ---Testcase 64: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Unique - Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) - -> Foreign Scan on public."type_BOOLEAN_oper" - Output: b1, b2, (b1 AND b2), (b1 OR b2) - SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST -(5 rows) - ---Testcase 65: -SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; - b1 | b2 | a | o -----+----+---+--- - f | t | f | t - t | f | f | t - t | t | t | t - t | | | t - | t | | t -(5 rows) - ---Testcase 66: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; - QUERY PLAN ------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) -(3 rows) - ---Testcase 67: -UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; ---Testcase 68: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - t | f - t | t - t | - | f - | t - | -(6 rows) - ---Testcase 69: -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; ---Testcase 70: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_BOOLEAN_oper" - -> Foreign Update on public."type_BOOLEAN_oper" - SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) -(3 rows) - ---Testcase 71: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | t - f | - | f - | -(5 rows) - ---Testcase 72: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_BOOLEAN_oper" - -> Foreign Delete on public."type_BOOLEAN_oper" - SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) -(3 rows) - ---Testcase 73: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; ---Testcase 74: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | f - f | - | f - | -(4 rows) - ---Testcase 75: -DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; ---Testcase 76: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 77: -DELETE FROM "type_BOOLEAN_oper" WHERE b2; ---Testcase 78: -SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; - b1 | b2 -----+---- - f | - | -(2 rows) - ---Testcase 79: -DELETE FROM "type_BOOLEAN"; ---Testcase 003: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 6 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_BOOLEAN" -drop cascades to foreign table "type_BOOLEAN+" -drop cascades to foreign table "type_BOOLEANpk" -drop cascades to foreign table "type_BOOLEAN_oper" -drop cascades to server sqlite2 diff --git a/expected/17.0/types/macaddr.out b/expected/17.0/types/macaddr.out deleted file mode 100644 index 286573dd..00000000 --- a/expected/17.0/types/macaddr.out +++ /dev/null @@ -1,957 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); ---Testcase 012: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); ---Testcase 013: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); ---Testcase 014: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); ---Testcase 015: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); ---Testcase 016: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); ---Testcase 017: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); ---Testcase 018: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); ---Testcase 019: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); ---Testcase 020: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); ---Testcase 021: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); ---Testcase 022: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); ---Testcase 023: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); ---Testcase 024: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; ---Testcase 029: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); ---Testcase 030: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); ---Testcase 031: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); ---Testcase 032: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); ---Testcase 033: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); ---Testcase 034: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); ---Testcase 035: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); ---Testcase 036: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); ---Testcase 037: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); ---Testcase 038: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); ---Testcase 039: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); ---Testcase 040: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); ---Testcase 041: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); ---Testcase 042: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); ---Testcase 046: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); ---Testcase 047: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); ---Testcase 048: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); ---Testcase 049: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); ---Testcase 050: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); ---Testcase 051: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); ---Testcase 052: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); ---Testcase 053: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); ---Testcase 054: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); ---Testcase 055: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); ---Testcase 056: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); ---Testcase 057: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); ---Testcase 058: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); ---Testcase 062: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); ---Testcase 063: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); ---Testcase 064: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); ---Testcase 065: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); ---Testcase 066: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); ---Testcase 067: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); ---Testcase 068: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); ---Testcase 069: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); ---Testcase 070: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); ---Testcase 071: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); ---Testcase 072: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); ---Testcase 073: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); ---Testcase 074: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); - QUERY PLAN --------------------------------------------------- - Insert on public."type_MACADDR" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03'::macaddr -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); ---Testcase 077: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 - 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 - 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 - 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 - 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 - 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 - 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 - 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 - 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 - 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 - 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 - QUERY PLAN ----------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Delete on public."type_MACADDR" - -> Foreign Delete on public."type_MACADDR" - SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); ---Testcase 108: -SELECT * FROM "type_MACADDR+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------+------+----+------------------- - 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 - 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 - 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR" - -> Foreign Update on public."type_MACADDR" - SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR+"; - i | m | t | l | tx -----+-------------------+---------+----+------------------- - 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 - 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 - 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 - 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 - 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 - 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 - 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 - 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 - 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 - 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 - 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; - i | m -----+------------------- - 63 | 00:00:00:00:00:01 - 64 | 00:00:00:00:00:02 - 65 | 00:00:00:00:00:03 - 66 | 00:00:01:00:00:00 - 67 | 00:00:02:00:00:00 - 68 | 00:00:03:00:00:00 - 60 | 01:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 62 | 03:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; - i | m -----+------------------- - 62 | 03:00:00:00:00:00 - 61 | 02:00:00:00:00:00 - 60 | 01:00:00:00:00:00 - 68 | 00:00:03:00:00:00 - 67 | 00:00:02:00:00:00 - 66 | 00:00:01:00:00:00 - 65 | 00:00:00:00:00:03 - 64 | 00:00:00:00:00:02 - 63 | 00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDRpk"; - col -------------------- - 01:02:03:04:05:06 - 01:02:03:04:05:06 - 01:02:03:04:05:06 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDRpk"; ---no macaddr operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m | '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m & '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m > '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m < '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m = '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m >= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <= '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR" - Output: (m <> '01:02:03:04:05:06'::macaddr) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR" -drop cascades to foreign table "type_MACADDR+" -drop cascades to foreign table "type_MACADDRpk" -drop cascades to server sqlite2 diff --git a/expected/17.0/types/macaddr8.out b/expected/17.0/types/macaddr8.out deleted file mode 100644 index e367ee36..00000000 --- a/expected/17.0/types/macaddr8.out +++ /dev/null @@ -1,958 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); ---Testcase 010: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; ---Testcase 011: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); ---Testcase 012: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); ---Testcase 013: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); ---Testcase 014: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); ---Testcase 015: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); ---Testcase 016: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); ---Testcase 017: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); ---Testcase 018: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); ---Testcase 019: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); ---Testcase 020: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); ---Testcase 021: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); ---Testcase 022: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); ---Testcase 023: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); ---Testcase 024: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); ---Testcase 025: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; ---Testcase 026: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); ---Testcase 027: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; ---Testcase 029: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); ---Testcase 030: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); ---Testcase 031: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); ---Testcase 032: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); ---Testcase 033: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); ---Testcase 034: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); ---Testcase 035: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); ---Testcase 036: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); ---Testcase 037: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); ---Testcase 038: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); ---Testcase 039: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); ---Testcase 040: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); ---Testcase 041: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); ---Testcase 042: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); ---Testcase 043: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 044: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); ---Testcase 045: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); ---Testcase 046: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); ---Testcase 047: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); ---Testcase 048: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); ---Testcase 049: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); ---Testcase 050: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); ---Testcase 051: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); ---Testcase 052: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); ---Testcase 053: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); ---Testcase 054: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); ---Testcase 055: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); ---Testcase 056: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); ---Testcase 057: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); ---Testcase 058: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); ---Testcase 059: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 060: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); ---Testcase 061: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); ---Testcase 062: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); ---Testcase 063: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); ---Testcase 064: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); ---Testcase 065: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); ---Testcase 066: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); ---Testcase 067: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); ---Testcase 068: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); ---Testcase 069: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); ---Testcase 070: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); ---Testcase 071: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); ---Testcase 072: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); ---Testcase 073: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); ---Testcase 074: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); ---Testcase 075: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); - QUERY PLAN ---------------------------------------------------------- - Insert on public."type_MACADDR8" - Batch Size: 1 - -> Result - Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 -(4 rows) - ---Testcase 076: -CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); ---Testcase 077: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(58 rows) - ---Testcase 078: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 079: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 080: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 081: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 082: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 083: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 084: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 086: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(29 rows) - ---Testcase 087: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8+" - Output: i, m, t, l, tx - SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) -(3 rows) - ---Testcase 088: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 089: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 090: -SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 - 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 - 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 - 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 - 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 - 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 - 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 - 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 - 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 - 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 - 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 -(29 rows) - ---Testcase 091: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; ---Testcase 092: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) -(3 rows) - ---Testcase 093: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 094: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) -(3 rows) - ---Testcase 095: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; ---Testcase 096: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) -(3 rows) - ---Testcase 098: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; ---Testcase 099: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 100: -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 102: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 104: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- - Delete on public."type_MACADDR8" - -> Foreign Delete on public."type_MACADDR8" - SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) -(3 rows) - ---Testcase 106: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 -(30 rows) - ---Testcase 107: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); ---Testcase 108: -SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; - i | m | t | l | tx -----+-------------------------+------+----+------------------------- - 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 -(1 row) - ---Testcase 109: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; ---Testcase 110: -- text -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) -(3 rows) - ---Testcase 111: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 -(31 rows) - ---Testcase 112: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 113: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; ---Testcase 114: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) -(3 rows) - ---Testcase 115: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+--------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 - 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 - 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 -(31 rows) - ---Testcase 116: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 117: -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; ---Testcase 118: -- BLOB -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_MACADDR8" - -> Foreign Update on public."type_MACADDR8" - SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) -(3 rows) - ---Testcase 119: -SELECT * FROM "type_MACADDR8+"; - i | m | t | l | tx -----+-------------------------+---------+----+------------------------- - 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 - 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 - 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 - 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 - 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 - 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 - 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 - 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 - 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 - 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 - 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 -(31 rows) - ---Testcase 120: -DELETE FROM "type_MACADDR8"; ---Testcase 121: -- sort test -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 122: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); ---Testcase 123: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 124: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); ---Testcase 125: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 126: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); ---Testcase 127: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 128: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); ---Testcase 129: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 130: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); ---Testcase 131: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 132: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); ---Testcase 133: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); ---Testcase 134: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); ---Testcase 135: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); ---Testcase 136: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); ---Testcase 137: -ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); ---Testcase 138: -INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); ---Testcase 139: -SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; - i | m -----+------------------------- - 63 | 00:00:00:00:00:00:00:01 - 64 | 00:00:00:00:00:00:00:02 - 65 | 00:00:00:00:00:00:00:03 - 66 | 00:00:00:00:01:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 62 | 03:00:00:00:00:00:00:00 -(9 rows) - ---Testcase 140: -SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; - i | m -----+------------------------- - 62 | 03:00:00:00:00:00:00:00 - 61 | 02:00:00:00:00:00:00:00 - 60 | 01:00:00:00:00:00:00:00 - 68 | 00:00:00:00:03:00:00:00 - 67 | 00:00:00:00:02:00:00:00 - 66 | 00:00:00:00:01:00:00:00 - 65 | 00:00:00:00:00:00:00:03 - 64 | 00:00:00:00:00:00:00:02 - 63 | 00:00:00:00:00:00:00:01 -(9 rows) - ---Testcase 150: -CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 151: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); ---Testcase 152: -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 153: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); ---Testcase 154: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 155: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); ---Testcase 156: NO ERR, but the same semantics! -INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); ---Testcase 157: -ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); -ERROR: option "column_type" provided more than once ---Testcase 158: ERR - primary key -INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) ---Testcase 159: -SELECT * FROM "type_MACADDR8pk"; - col -------------------------- - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 - 01:02:03:04:05:06:07:08 -(3 rows) - ---Testcase 160: -DELETE FROM "type_MACADDR8pk"; ---no macaddr8 operators pushing down ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT ~"m" FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (~ m) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; - QUERY PLAN ---------------------------------------------------------------------------------- - Foreign Scan on public."type_MACADDR8" - Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) - SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" -(3 rows) - ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_MACADDR8" -drop cascades to foreign table "type_MACADDR8+" -drop cascades to foreign table "type_MACADDR8pk" -drop cascades to server sqlite2 diff --git a/expected/17.0/types/uuid.out b/expected/17.0/types/uuid.out deleted file mode 100644 index 35a2d86c..00000000 --- a/expected/17.0/types/uuid.out +++ /dev/null @@ -1,551 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 001: -CREATE EXTENSION sqlite_fdw; ---Testcase 002: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 009: -CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); ---Testcase 010: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; ---Testcase 011: -INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 012: -INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 013: -INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 014: -INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 015: -INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 016: -INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 017: -INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 018: -INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 019: -INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 020: -INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 021: -INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 022: -INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 023: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 024: -INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 025: -INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 026: -INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); ---Testcase 027: -INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); ---Testcase 028: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 029: -INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 030: -INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 031: -INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 032: -INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 033: -INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 034: -INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 035: -INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 036: -INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 037: -INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 038: -INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 039: -INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 040: -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 041: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 042: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); ---Testcase 043: -INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); ---Testcase 044: -INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); ---Testcase 045: -INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); ---Testcase 046: -INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); ---Testcase 047: -INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); ---Testcase 048: -INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 049: -INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); ---Testcase 050: -INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); ---Testcase 051: -INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); ---Testcase 052: -INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); ---Testcase 053: -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); ---Testcase 054: -INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 055: -EXPLAIN (VERBOSE, COSTS OFF) -INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); - QUERY PLAN ------------------------------------------------------------------- - Insert on public."type_UUID" - Batch Size: 1 - -> Result - Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid -(4 rows) - ---Testcase 056: -CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); ---Testcase 057: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(40 rows) - ---Testcase 058: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 059: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 060: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 061: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 062: -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(20 rows) - ---Testcase 063: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) -(3 rows) - ---Testcase 064: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 065: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 066: -SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; - i | u | t | l -----+--------------------------------------+------+---- - 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 - 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 - 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 - 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 - 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 - 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 - 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 -(20 rows) - ---Testcase 067: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; ---Testcase 068: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) -(3 rows) - ---Testcase 069: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 070: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) -(3 rows) - ---Testcase 071: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 072: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; ---Testcase 073: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) -(3 rows) - ---Testcase 074: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 - 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 - 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 - 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 - 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 - 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 - 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 -(21 rows) - ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; ---Testcase 076: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 -(1 row) - ---Testcase 077: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); ---Testcase 075: -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; ---Testcase 076: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 077: -SELECT * FROM "type_UUID+"; - i | u | t | l ----+---+---+--- -(0 rows) - ---Testcase 078: -INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); ---Testcase 079: -SELECT * FROM "type_UUID+" WHERE "i" = 41; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 -(1 row) - ---Testcase 080: -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; ---Testcase 081: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) -(3 rows) - ---Testcase 082: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 083: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); ---Testcase 084: -EXPLAIN (VERBOSE, COSTS OFF) -UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - Update on public."type_UUID" - -> Foreign Update on public."type_UUID" - SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) -(3 rows) - ---Testcase 085: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; ---Testcase 086: -INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); ---Testcase 087: -INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); ---Testcase 088: -ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; ---Testcase 089: -SELECT * FROM "type_UUID+" WHERE "i" = 42; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 090: -SELECT * FROM "type_UUID+" WHERE "i" = 43; -ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value -HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a -CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column ---Testcase 091: -EXPLAIN (VERBOSE, COSTS OFF) -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); - QUERY PLAN ----------------------------------------------------------------------------- - Delete on public."type_UUID" - -> Foreign Delete on public."type_UUID" - SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) -(3 rows) - ---Testcase 092: -DELETE FROM "type_UUID" WHERE "i" IN (42, 43); ---Testcase 093: -INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); ---Testcase 094: -SELECT * FROM "type_UUID+"; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 - 44 | | null | -(2 rows) - ---Testcase 095: -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - i | u | t | l -----+---+------+--- - 44 | | null | -(1 row) - ---Testcase 096: -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - i | u | t | l -----+--------------------------------------+------+---- - 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 -(1 row) - ---Testcase 097: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) -(3 rows) - ---Testcase 098: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."type_UUID+" - Output: i, u, t, l - SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) -(3 rows) - ---Testcase 100: -CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 101: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); ---Testcase 102: -INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); ---Testcase 103: -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 104: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(2 rows) - ---Testcase 105: ERR - primary key -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) ---Testcase 106: -ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); ---Testcase 107: NO ERR, but the same semantics! -INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); ---Testcase 108: -SELECT * FROM "type_UUIDpk"; - col --------------------------------------- - a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 - b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 -(3 rows) - ---Testcase 109: -DELETE FROM "type_UUIDpk"; ---Testcase 200: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to 5 other objects -DETAIL: drop cascades to server sqlite_svr -drop cascades to foreign table "type_UUID" -drop cascades to foreign table "type_UUID+" -drop cascades to foreign table "type_UUIDpk" -drop cascades to server sqlite2 diff --git a/test.sh b/test.sh index f2bf16a5..f53f3068 100755 --- a/test.sh +++ b/test.sh @@ -23,10 +23,18 @@ done [ "$ENABLE_GIS" == "1" ] && gispref='post' || gispref='no'; [ "$ENABLE_GIS" == "1" ] && gissuf='ok' || gissuf='no'; +while (( "$#" )); do + export "$1"; + shift; +done + +[ "$ENABLE_GIS" == "1" ] && gispref='post' || gispref='no'; + # full test sequence, you can put your own test sequence here -type_tests="types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/json types/numeric types/${gispref}gis types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid"; +type_tests="types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/numeric types/${gispref}gis types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid"; gis_dep_tests="gis_$gissuf/type gis_$gissuf/auto_import"; -export REGRESS="libsqlite extra/sqlite_fdw_post $type_tests extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $gis_dep_tests"; +export REGRESS="extra/sqlite_fdw_post $type_tests extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $gis_dep_tests"; + make clean $1; make $1; make check $1 | tee make_check.out; From e851e169fd6d07bb9975d54ec3f6b1b8c2d26ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Thu, 10 Apr 2025 20:19:55 +0300 Subject: [PATCH 5/9] Fix before rebase 1 --- .github/workflows/CI.yml | 4 +- GitHubActions/install_sqlite.sh | 2 +- Makefile | 30 +- connection.c | 7 +- expected/13.15/extra/insert.out | 2 +- expected/13.15/extra/sqlite_fdw_post.out | 10 +- expected/13.15/gis_ok/auto_import.out | 638 ------ expected/13.15/gis_ok/type.out | 539 ----- expected/13.15/libsqlite.out | 4 - expected/13.15/sqlite_fdw.out | 4 +- expected/13.15/types/bitstring.out | 807 ++++++++ expected/13.15/types/bool.out | 1273 ++++++++++++ expected/13.15/types/macaddr.out | 951 +++++++++ expected/13.15/types/macaddr8.out | 952 +++++++++ expected/13.15/types/uuid.out | 546 ++++++ .../auto_import.out | 2 - .../{types => with_gis_support}/postgis.out | 3 +- .../with_gis_support}/type.out | 8 +- .../without_gis_support}/auto_import.out | 2 - .../{types => without_gis_support}/nogis.out | 0 .../{gis_no => without_gis_support}/type.out | 8 +- expected/14.12/extra/insert.out | 2 +- expected/14.12/extra/sqlite_fdw_post.out | 10 +- expected/14.12/gis_ok/auto_import.out | 638 ------ expected/14.12/gis_ok/type.out | 539 ----- expected/14.12/libsqlite.out | 4 - expected/14.12/sqlite_fdw.out | 4 +- expected/14.12/types/bitstring.out | 807 ++++++++ expected/14.12/types/bool.out | 1273 ++++++++++++ expected/14.12/types/macaddr.out | 954 +++++++++ expected/14.12/types/macaddr8.out | 955 +++++++++ expected/14.12/types/uuid.out | 548 ++++++ .../with_gis_support}/auto_import.out | 2 - .../{types => with_gis_support}/postgis.out | 3 +- .../with_gis_support}/type.out | 8 +- .../without_gis_support}/auto_import.out | 2 - .../{types => without_gis_support}/nogis.out | 0 .../without_gis_support}/type.out | 8 +- expected/15.7/extra/insert.out | 2 +- expected/15.7/extra/sqlite_fdw_post.out | 10 +- expected/15.7/gis_ok/auto_import.out | 638 ------ expected/15.7/gis_ok/type.out | 539 ----- expected/15.7/libsqlite.out | 4 - expected/15.7/sqlite_fdw.out | 4 +- expected/15.7/types/bitstring.out | 807 ++++++++ expected/15.7/types/bool.out | 1273 ++++++++++++ expected/15.7/types/macaddr.out | 954 +++++++++ expected/15.7/types/macaddr8.out | 955 +++++++++ expected/15.7/types/uuid.out | 548 ++++++ .../15.7/with_gis_support/auto_import.out | 636 ++++++ .../{types => with_gis_support}/postgis.out | 3 +- expected/15.7/with_gis_support/type.out | 535 +++++ .../15.7/without_gis_support/auto_import.out | 636 ++++++ .../{types => without_gis_support}/nogis.out | 0 expected/15.7/without_gis_support/type.out | 535 +++++ expected/16.3/extra/insert.out | 2 +- expected/16.3/extra/sqlite_fdw_post.out | 10 +- expected/16.3/gis_ok/auto_import.out | 638 ------ expected/16.3/gis_ok/type.out | 539 ----- expected/16.3/libsqlite.out | 4 - expected/16.3/sqlite_fdw.out | 4 +- expected/16.3/types/bitstring.out | 807 ++++++++ expected/16.3/types/bool.out | 1273 ++++++++++++ expected/16.3/types/macaddr.out | 954 +++++++++ expected/16.3/types/macaddr8.out | 955 +++++++++ expected/16.3/types/uuid.out | 548 ++++++ .../16.3/with_gis_support/auto_import.out | 636 ++++++ .../{types => with_gis_support}/postgis.out | 3 +- expected/16.3/with_gis_support/type.out | 535 +++++ .../16.3/without_gis_support/auto_import.out | 636 ++++++ .../{types => without_gis_support}/nogis.out | 0 expected/16.3/without_gis_support/type.out | 535 +++++ expected/17.0/extra/insert.out | 2 +- expected/17.0/extra/sqlite_fdw_post.out | 10 +- expected/17.0/gis_no/auto_import.out | 638 ------ expected/17.0/gis_no/type.out | 537 ----- expected/17.0/gis_ok/auto_import.out | 638 ------ expected/17.0/gis_ok/type.out | 539 ----- expected/17.0/libsqlite.out | 4 - expected/17.0/sqlite_fdw.out | 4 +- expected/17.0/types/bitstring.out | 807 ++++++++ expected/17.0/types/bool.out | 1273 ++++++++++++ expected/17.0/types/macaddr.out | 954 +++++++++ expected/17.0/types/macaddr8.out | 955 +++++++++ expected/17.0/types/postgis.out | 1746 ---------------- expected/17.0/types/uuid.out | 548 ++++++ .../17.0/with_gis_support/auto_import.out | 636 ++++++ expected/17.0/with_gis_support/postgis.out | 1747 +++++++++++++++++ expected/17.0/with_gis_support/type.out | 535 +++++ .../17.0/without_gis_support/auto_import.out | 636 ++++++ .../{types => without_gis_support}/nogis.out | 0 expected/17.0/without_gis_support/type.out | 535 +++++ sql/13.15/libsqlite.sql | 5 - sql/13.15/types/bitstring.sql | 3 - sql/13.15/types/bool.sql | 2 - sql/13.15/types/macaddr.sql | 3 - sql/13.15/types/macaddr8.sql | 3 - sql/13.15/types/uuid.sql | 3 - .../auto_import.sql | 3 - .../{types => with_gis_support}/postgis.sql | 2 +- .../with_gis_support}/type.sql | 2 - .../auto_import.sql | 3 - .../{types => without_gis_support}/nogis.sql | 0 .../{gis_no => without_gis_support}/type.sql | 3 - sql/14.12/libsqlite.sql | 5 - sql/14.12/types/bitstring.sql | 3 - sql/14.12/types/bool.sql | 2 - sql/14.12/types/macaddr.sql | 3 - sql/14.12/types/macaddr8.sql | 3 - sql/14.12/types/uuid.sql | 3 - .../auto_import.sql | 3 - .../{types => with_gis_support}/postgis.sql | 2 +- .../with_gis_support}/type.sql | 2 - .../auto_import.sql | 3 - .../{types => without_gis_support}/nogis.sql | 0 .../without_gis_support}/type.sql | 3 - sql/15.7/gis_no/auto_import.sql | 52 - sql/15.7/gis_ok/auto_import.sql | 52 - sql/15.7/libsqlite.sql | 5 - sql/15.7/types/bitstring.sql | 3 - sql/15.7/types/bool.sql | 2 - sql/15.7/types/macaddr.sql | 3 - sql/15.7/types/macaddr8.sql | 3 - sql/15.7/types/uuid.sql | 3 - sql/15.7/with_gis_support/auto_import.sql | 49 + .../{types => with_gis_support}/postgis.sql | 2 +- .../gis_ok => 15.7/with_gis_support}/type.sql | 2 - sql/15.7/without_gis_support/auto_import.sql | 49 + .../{types => without_gis_support}/nogis.sql | 0 .../without_gis_support}/type.sql | 3 - sql/16.3/gis_no/auto_import.sql | 52 - sql/16.3/gis_ok/auto_import.sql | 52 - sql/16.3/libsqlite.sql | 5 - sql/16.3/types/bitstring.sql | 3 - sql/16.3/types/bool.sql | 2 - sql/16.3/types/macaddr.sql | 3 - sql/16.3/types/macaddr8.sql | 3 - sql/16.3/types/uuid.sql | 3 - sql/16.3/with_gis_support/auto_import.sql | 49 + .../{types => with_gis_support}/postgis.sql | 2 +- .../gis_ok => 16.3/with_gis_support}/type.sql | 2 - sql/16.3/without_gis_support/auto_import.sql | 49 + .../{types => without_gis_support}/nogis.sql | 0 .../{gis_no => without_gis_support}/type.sql | 3 - sql/17.0/gis_no/auto_import.sql | 52 - sql/17.0/gis_no/type.sql | 286 --- sql/17.0/gis_ok/auto_import.sql | 52 - sql/17.0/gis_ok/type.sql | 288 --- sql/17.0/libsqlite.sql | 5 - sql/17.0/types/bitstring.sql | 3 - sql/17.0/types/bool.sql | 2 - sql/17.0/types/macaddr.sql | 3 - sql/17.0/types/macaddr8.sql | 3 - sql/17.0/types/postgis.sql | 602 ------ sql/17.0/types/uuid.sql | 3 - sql/17.0/with_gis_support/auto_import.sql | 49 + sql/17.0/with_gis_support/postgis.sql | 602 ++++++ sql/17.0/with_gis_support/type.sql | 286 +++ sql/17.0/without_gis_support/auto_import.sql | 49 + .../{types => without_gis_support}/nogis.sql | 0 sql/17.0/without_gis_support/type.sql | 283 +++ test.sh | 35 +- 162 files changed, 33011 insertions(+), 10563 deletions(-) delete mode 100644 expected/13.15/gis_ok/auto_import.out delete mode 100644 expected/13.15/gis_ok/type.out create mode 100644 expected/13.15/types/bitstring.out create mode 100644 expected/13.15/types/bool.out create mode 100644 expected/13.15/types/macaddr.out create mode 100644 expected/13.15/types/macaddr8.out create mode 100644 expected/13.15/types/uuid.out rename expected/13.15/{gis_no => with_gis_support}/auto_import.out (99%) rename expected/13.15/{types => with_gis_support}/postgis.out (99%) rename expected/{14.12/gis_no => 13.15/with_gis_support}/type.out (98%) rename expected/{14.12/gis_no => 13.15/without_gis_support}/auto_import.out (99%) rename expected/13.15/{types => without_gis_support}/nogis.out (100%) rename expected/13.15/{gis_no => without_gis_support}/type.out (98%) delete mode 100644 expected/14.12/gis_ok/auto_import.out delete mode 100644 expected/14.12/gis_ok/type.out create mode 100644 expected/14.12/types/bitstring.out create mode 100644 expected/14.12/types/bool.out create mode 100644 expected/14.12/types/macaddr.out create mode 100644 expected/14.12/types/macaddr8.out create mode 100644 expected/14.12/types/uuid.out rename expected/{15.7/gis_no => 14.12/with_gis_support}/auto_import.out (99%) rename expected/14.12/{types => with_gis_support}/postgis.out (99%) rename expected/{15.7/gis_no => 14.12/with_gis_support}/type.out (98%) rename expected/{16.3/gis_no => 14.12/without_gis_support}/auto_import.out (99%) rename expected/14.12/{types => without_gis_support}/nogis.out (100%) rename expected/{16.3/gis_no => 14.12/without_gis_support}/type.out (98%) delete mode 100644 expected/15.7/gis_ok/auto_import.out delete mode 100644 expected/15.7/gis_ok/type.out create mode 100644 expected/15.7/types/bitstring.out create mode 100644 expected/15.7/types/bool.out create mode 100644 expected/15.7/types/macaddr.out create mode 100644 expected/15.7/types/macaddr8.out create mode 100644 expected/15.7/types/uuid.out create mode 100644 expected/15.7/with_gis_support/auto_import.out rename expected/15.7/{types => with_gis_support}/postgis.out (99%) create mode 100644 expected/15.7/with_gis_support/type.out create mode 100644 expected/15.7/without_gis_support/auto_import.out rename expected/15.7/{types => without_gis_support}/nogis.out (100%) create mode 100644 expected/15.7/without_gis_support/type.out delete mode 100644 expected/16.3/gis_ok/auto_import.out delete mode 100644 expected/16.3/gis_ok/type.out create mode 100644 expected/16.3/types/bitstring.out create mode 100644 expected/16.3/types/bool.out create mode 100644 expected/16.3/types/macaddr.out create mode 100644 expected/16.3/types/macaddr8.out create mode 100644 expected/16.3/types/uuid.out create mode 100644 expected/16.3/with_gis_support/auto_import.out rename expected/16.3/{types => with_gis_support}/postgis.out (99%) create mode 100644 expected/16.3/with_gis_support/type.out create mode 100644 expected/16.3/without_gis_support/auto_import.out rename expected/16.3/{types => without_gis_support}/nogis.out (100%) create mode 100644 expected/16.3/without_gis_support/type.out delete mode 100644 expected/17.0/gis_no/auto_import.out delete mode 100644 expected/17.0/gis_no/type.out delete mode 100644 expected/17.0/gis_ok/auto_import.out delete mode 100644 expected/17.0/gis_ok/type.out create mode 100644 expected/17.0/types/bitstring.out create mode 100644 expected/17.0/types/bool.out create mode 100644 expected/17.0/types/macaddr.out create mode 100644 expected/17.0/types/macaddr8.out delete mode 100644 expected/17.0/types/postgis.out create mode 100644 expected/17.0/types/uuid.out create mode 100644 expected/17.0/with_gis_support/auto_import.out create mode 100644 expected/17.0/with_gis_support/postgis.out create mode 100644 expected/17.0/with_gis_support/type.out create mode 100644 expected/17.0/without_gis_support/auto_import.out rename expected/17.0/{types => without_gis_support}/nogis.out (100%) create mode 100644 expected/17.0/without_gis_support/type.out rename sql/13.15/{gis_no => with_gis_support}/auto_import.sql (96%) rename sql/13.15/{types => with_gis_support}/postgis.sql (99%) rename sql/{15.7/gis_ok => 13.15/with_gis_support}/type.sql (99%) rename sql/13.15/{gis_ok => without_gis_support}/auto_import.sql (96%) rename sql/13.15/{types => without_gis_support}/nogis.sql (100%) rename sql/13.15/{gis_no => without_gis_support}/type.sql (99%) rename sql/14.12/{gis_no => with_gis_support}/auto_import.sql (96%) rename sql/14.12/{types => with_gis_support}/postgis.sql (99%) rename sql/{13.15/gis_ok => 14.12/with_gis_support}/type.sql (99%) rename sql/14.12/{gis_ok => without_gis_support}/auto_import.sql (96%) rename sql/14.12/{types => without_gis_support}/nogis.sql (100%) rename sql/{15.7/gis_no => 14.12/without_gis_support}/type.sql (99%) delete mode 100644 sql/15.7/gis_no/auto_import.sql delete mode 100644 sql/15.7/gis_ok/auto_import.sql create mode 100644 sql/15.7/with_gis_support/auto_import.sql rename sql/15.7/{types => with_gis_support}/postgis.sql (99%) rename sql/{16.3/gis_ok => 15.7/with_gis_support}/type.sql (99%) create mode 100644 sql/15.7/without_gis_support/auto_import.sql rename sql/15.7/{types => without_gis_support}/nogis.sql (100%) rename sql/{14.12/gis_no => 15.7/without_gis_support}/type.sql (99%) delete mode 100644 sql/16.3/gis_no/auto_import.sql delete mode 100644 sql/16.3/gis_ok/auto_import.sql create mode 100644 sql/16.3/with_gis_support/auto_import.sql rename sql/16.3/{types => with_gis_support}/postgis.sql (99%) rename sql/{14.12/gis_ok => 16.3/with_gis_support}/type.sql (99%) create mode 100644 sql/16.3/without_gis_support/auto_import.sql rename sql/16.3/{types => without_gis_support}/nogis.sql (100%) rename sql/16.3/{gis_no => without_gis_support}/type.sql (99%) delete mode 100644 sql/17.0/gis_no/auto_import.sql delete mode 100644 sql/17.0/gis_no/type.sql delete mode 100644 sql/17.0/gis_ok/auto_import.sql delete mode 100644 sql/17.0/gis_ok/type.sql delete mode 100644 sql/17.0/types/postgis.sql create mode 100644 sql/17.0/with_gis_support/auto_import.sql create mode 100644 sql/17.0/with_gis_support/postgis.sql create mode 100644 sql/17.0/with_gis_support/type.sql create mode 100644 sql/17.0/without_gis_support/auto_import.sql rename sql/17.0/{types => without_gis_support}/nogis.sql (100%) create mode 100644 sql/17.0/without_gis_support/type.sql diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a8c0bb22..1d63645a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -24,8 +24,8 @@ jobs: test: needs: detect-pgversion env: - SQLITE_VERSION : "3490000" - SQLITE_YEAR: "2025" + SQLITE_VERSION : "3460000" + SQLITE_YEAR: "2024" POSTGIS_VERSION : "3.4.2" HTTP_PROXY: "" HTTPS_PROXY: "" diff --git a/GitHubActions/install_sqlite.sh b/GitHubActions/install_sqlite.sh index 7ff788f5..bbe2c930 100644 --- a/GitHubActions/install_sqlite.sh +++ b/GitHubActions/install_sqlite.sh @@ -39,7 +39,7 @@ cd ./workdir vsrc="sqlite-src-${VERSION}" adr="https://www.sqlite.org/${YEAR}/$vsrc.zip" echo "SQLite source code archive: $adr" -curl -O "$adr" +wget "$adr" -O "$vsrc.zip" unzip "$vsrc.zip" > /dev/null cd "$vsrc" diff --git a/Makefile b/Makefile index 652ed825..d4de88eb 100644 --- a/Makefile +++ b/Makefile @@ -17,21 +17,23 @@ DATA = sqlite_fdw--1.0.sql sqlite_fdw--1.0--1.1.sql ifdef ENABLE_GIS PG_CFLAGS += -DSQLITE_FDW_GIS_ENABLE -GISTEST = postgis -GISPREF = ok +GIS_DEP_TESTS_DIR = with_gis_support +GIS_TEST = postgis +$(info There is PostGIS support for SQLite FDW) else -GISTEST = nogis -GISPREF = no +GIS_DEP_TESTS_DIR = without_gis_support +GIS_TEST = nogis +$(info There is NO PostGIS support for SQLite FDW) endif # Tests for PostgreSQL data types support -TYPETESTS = types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/numeric types/$(GISTEST) types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid +DATA_TYPE_TESTS = types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/json types/numeric types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid # Tests with different versions with GIS support and without GIS support -GISDEPTESTS = gis_$(GISPREF)/type gis_$(GISPREF)/auto_import +GIS_DEP_TESTS = $(GIS_DEP_TESTS_DIR)/type $(GIS_DEP_TESTS_DIR)/auto_import $(GIS_DEP_TESTS_DIR)/$(GIS_TEST) ifndef REGRESS # System tests, full default sequence -REGRESS = extra/sqlite_fdw_post $(TYPETESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GISDEPTESTS) +REGRESS = libsqlite extra/sqlite_fdw_post $(DATA_TYPE_TESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GIS_DEP_TESTS) endif # Other encodings also are tested. Client encoding should be UTF-8- @@ -56,10 +58,6 @@ ifdef ENABLE_GIS override SHLIB_LINK += -lspatialite endif -ifdef ENABLE_GIS -override SHLIB_LINK += -lspatialite -endif - ifdef USE_PGXS PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) @@ -86,19 +84,19 @@ endif REGRESS := $(addprefix $(REGRESS_PREFIX_SUB)/,$(REGRESS)) $(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/extra) $(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/types) -$(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/gis_$(GISPREF)) +$(shell mkdir -p results/$(REGRESS_PREFIX_SUB)/$(GIS_DEP_TESTS_DIR)) # $(info ENABLE_GIS is $(ENABLE_GIS)) - $(info SHLIB_LINK is $(SHLIB_LINK)) +# $(info SHLIB_LINK is $(SHLIB_LINK)) # $(info LD_LIBRARY_PATH is $(LD_LIBRARY_PATH)) - $(info PG_CFLAGS is $(PG_CFLAGS)) - $(info PG_CPPFLAGS is $(PG_CPPFLAGS)) +# $(info PG_CFLAGS is $(PG_CFLAGS)) +# $(info PG_CPPFLAGS is $(PG_CPPFLAGS)) # $(info REGRESS is $(REGRESS)) # $(info DLSUFFIX is $(DLSUFFIX)) - ifdef ENABLE_GIS check: temp-install temp-install: EXTRA_INSTALL+=contrib/postgis checkprep: EXTRA_INSTALL+=contrib/postgis endif + diff --git a/connection.c b/connection.c index a8d15407..ba28120d 100644 --- a/connection.c +++ b/connection.c @@ -199,7 +199,6 @@ sqlite_open_db(const char *dbpath, int flags) ereport(ERROR, (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION), errmsg("Failed to open SQLite DB, file '%s', result code %d", dbpath, rc))); - sqlite3_extended_result_codes(conn, true); /* make 'LIKE' of SQLite case sensitive like PostgreSQL */ rc = sqlite3_exec(conn, "pragma case_sensitive_like=1", NULL, NULL, &err); @@ -392,13 +391,14 @@ sqlite_begin_remote_xact(ConnCacheEntry *entry) /* - * Report an sqlite execution error + * Report an SQLite execution error. */ void sqlitefdw_report_error(int elevel, sqlite3_stmt * stmt, sqlite3 * conn, const char *sql, int rc) { const char *message = sqlite3_errmsg(conn); + int erc = sqlite3_extended_errcode(conn); int sqlstate = ERRCODE_FDW_ERROR; /* copy sql before callling another SQLite API */ @@ -415,11 +415,10 @@ sqlitefdw_report_error(int elevel, sqlite3_stmt * stmt, sqlite3 * conn, (errcode(sqlstate), errmsg("Failed to execute remote SQL"), errcontext("SQL query: %s", sql ? sql : ""), - errhint("SQLite error '%s', SQLite result code %d", message ? message : "", rc) + errhint("SQLite error '%s', SQLite primary result code %d, extended result code %d", message ? message : "", rc, erc) )); } - /* * sqlitefdw_xact_callback --- cleanup at main-transaction end. */ diff --git a/expected/13.15/extra/insert.out b/expected/13.15/extra/insert.out index 25f5106c..d4c83a65 100644 --- a/expected/13.15/extra/insert.out +++ b/expected/13.15/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite primary result code 19, extended result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/13.15/extra/sqlite_fdw_post.out b/expected/13.15/extra/sqlite_fdw_post.out index 02b9fa29..9b044860 100644 --- a/expected/13.15/extra/sqlite_fdw_post.out +++ b/expected/13.15/extra/sqlite_fdw_post.out @@ -6437,7 +6437,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6448,12 +6448,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -6856,12 +6856,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; -- But inconsistent check constraints provide inconsistent results diff --git a/expected/13.15/gis_ok/auto_import.out b/expected/13.15/gis_ok/auto_import.out deleted file mode 100644 index ec81e744..00000000 --- a/expected/13.15/gis_ok/auto_import.out +++ /dev/null @@ -1,638 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n ------------------------+----------------------+--------------------+------------------------+---------------------+---- - contrib_regression | public | department | contrib_regression | sqlite_svr | 1 - contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 - contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 - contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 - contrib_regression | public | t | contrib_regression | sqlite_svr | 5 - contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 - contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 - contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 - contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 - contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 - contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 - contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 - contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 - contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 - contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 - contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 - contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 - contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 - contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 - contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 - contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 - contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 - contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 - contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 - contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 - contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 - contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 - contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 - contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 - contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 - contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 - contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 - contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 - contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 - contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 - contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 - contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 - contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 - contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 - contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 - contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 - contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 - contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 - contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 - contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 - contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 - contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 - contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 - contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 - contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 - contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 - contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 - contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 - contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 - contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 -(55 rows) - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; - n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name -----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- - 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 - 1 | department | department_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric - 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 - 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar - 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 - 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 - 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 - 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 - 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | b | 2 | | YES | text | pg_catalog | text - 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 - 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 - 9 | limittest | y | 3 | | YES | text | pg_catalog | text - 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 - 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text - 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar - 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text - 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool - 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 - 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool - 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar - 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 - 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 - 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 - 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 - 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 - 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp - 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp - 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea - 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date - 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time - 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 - 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit - 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 - 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit - 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid - 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 - 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid - 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr - 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 - 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr - 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 - 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 - 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 - 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography - 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric - 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography - 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json - 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar - 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text - 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json - 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text - 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar - 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text - 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text - 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 - 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit - 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit - 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea - 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 - 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar - 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar - 39 | typetest | t | 4 | | YES | text | pg_catalog | text - 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp - 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp - 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text - 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar - 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text - 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text - 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text - 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text - 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text - 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea - 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date - 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text - 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar - 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 - 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json - 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 - 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 - 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar - 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 - 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea - 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea - 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 - 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea - 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 - 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea - 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 - 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea - 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea - 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea - 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 - 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text - 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 - 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 - 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text - 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text - 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry - 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar - 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text - 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb - 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 - 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date - 55 | ♂ | class | 6 | | YES | text | pg_catalog | text - 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar -(159 rows) - ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; - n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp -----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- - 1 | department | department_id | 1 | | | 64 | 2 | 0 | - 1 | department | department_name | 2 | | 1073741824 | | | | - 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | - 2 | employee | emp_name | 2 | | 1073741824 | | | | - 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | - 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | - 3 | empdata | emp_dat | 2 | | | | 10 | | - 4 | numbers | a | 1 | | | 64 | 2 | 0 | - 4 | numbers | b | 2 | 255 | 1020 | | | | - 5 | t | a | 1 | | | 64 | 2 | 0 | - 5 | t | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | - 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | - 7 | columntest | a a | 1 | | | 64 | 2 | 0 | - 7 | columntest | b b | 2 | | | 64 | 2 | 0 | - 7 | columntest | c c | 3 | | | 64 | 2 | 0 | - 8 | noprimary | a | 1 | | | 64 | 2 | 0 | - 8 | noprimary | b | 2 | | 1073741824 | | | | - 9 | limittest | id | 1 | | | 64 | 2 | 0 | - 9 | limittest | x | 2 | | | 64 | 2 | 0 | - 9 | limittest | y | 3 | | 1073741824 | | | | - 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | - 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c3 | 2 | | 1073741824 | | | | - 12 | case_exp | c6 | 3 | 10 | 40 | | | | - 13 | type_STRING | col | 1 | | 1073741824 | | | | - 14 | type_BOOLEANpk | col | 1 | | | | | | - 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | - 15 | type_BOOLEAN | b | 2 | | | | | | - 16 | type_BYTE | col | 1 | 1 | 4 | | | | - 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | - 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | - 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | - 20 | type_FLOAT | col | 1 | | | 53 | 2 | | - 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | - 22 | type_TIMESTAMP | col | 1 | | | | | | 6 - 22 | type_TIMESTAMP | b | 2 | | | | | | 6 - 23 | type_BLOB | col | 1 | | | | | | - 24 | type_DATE | col | 1 | | | | | | 0 - 25 | type_TIME | col | 1 | | | | | | 6 - 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | - 26 | type_BIT | b | 2 | 1 | | | | | - 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | - 27 | type_VARBIT | b | 2 | 1 | | | | | - 28 | type_UUIDpk | col | 1 | | | | | | - 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | - 29 | type_UUID | u | 2 | | | | | | - 30 | type_MACADDRpk | col | 1 | | | | | | - 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | - 31 | type_MACADDR | m | 2 | | | | | | - 32 | type_MACADDR8pk | col | 1 | | | | | | - 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | - 33 | type_MACADDR8 | m | 2 | | | | | | - 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | - 34 | types_PostGIS | gm | 2 | | | | | | - 34 | types_PostGIS | gg | 3 | | | | | | - 34 | types_PostGIS | r | 4 | | | | 10 | | - 34 | types_PostGIS | t | 5 | | 1073741824 | | | | - 34 | types_PostGIS | gm1 | 6 | | | | | | - 34 | types_PostGIS | gg1 | 7 | | | | | | - 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | - 35 | type_JSON | j | 2 | | | | | | - 35 | type_JSON | ot | 3 | 8 | 32 | | | | - 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | - 35 | type_JSON | q | 5 | | 1073741824 | | | | - 35 | type_JSON | j1 | 6 | | | | | | - 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | - 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | - 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | - 36 | type_JSONB | j | 2 | | | | | | - 36 | type_JSONB | ot | 3 | 8 | 32 | | | | - 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | - 36 | type_JSONB | q | 5 | | 1073741824 | | | | - 36 | type_JSONB | j1 | 6 | | | | | | - 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | - 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | - 37 | BitT | p | 1 | | | 64 | 2 | 0 | - 37 | BitT | a | 2 | 3 | | | | | - 37 | BitT | b | 3 | 5 | | | | | - 38 | notype | a | 1 | | | | | | - 39 | typetest | i | 1 | | | 64 | 2 | 0 | - 39 | typetest | v | 2 | 10 | 40 | | | | - 39 | typetest | c | 3 | 10 | 40 | | | | - 39 | typetest | t | 4 | | 1073741824 | | | | - 39 | typetest | d | 5 | | | | | | 6 - 39 | typetest | ti | 6 | | | | | | 6 - 40 | type_TEXT | col | 1 | | 1073741824 | | | | - 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | - 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | - 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | - 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | - 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | - 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | - 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | - 41 | alltypetest | c8 | 8 | 10 | 40 | | | | - 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | - 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | - 41 | alltypetest | c11 | 11 | | 1073741824 | | | | - 41 | alltypetest | c12 | 12 | | 1073741824 | | | | - 41 | alltypetest | c13 | 13 | | 1073741824 | | | | - 41 | alltypetest | c14 | 14 | | 1073741824 | | | | - 41 | alltypetest | c15 | 15 | | 1073741824 | | | | - 41 | alltypetest | c16 | 16 | | | | | | - 41 | alltypetest | c17 | 17 | | | 53 | 2 | | - 41 | alltypetest | c18 | 18 | | | 53 | 2 | | - 41 | alltypetest | c19 | 19 | | | 53 | 2 | | - 41 | alltypetest | c20 | 20 | | | 53 | 2 | | - 41 | alltypetest | c21 | 21 | | | | 10 | | - 41 | alltypetest | c22 | 22 | | | | 10 | | - 41 | alltypetest | c23 | 23 | | | | | | 0 - 41 | alltypetest | c24 | 24 | | | | | | 6 - 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | - 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | - 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | - 42 | json_osm_test | tags | 4 | | | | | | - 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | - 43 | shorty | id | 1 | | | 64 | 2 | 0 | - 43 | shorty | c | 2 | 10 | 40 | | | | - 44 | A a | col | 1 | | | 64 | 2 | 0 | - 45 | fts_table | name | 1 | | | | | | - 45 | fts_table | description | 2 | | | | | | - 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | - 46 | fts_table_data | block | 2 | | | | | | - 47 | fts_table_idx | segid | 1 | | | | | | - 47 | fts_table_idx | term | 2 | | | | | | - 47 | fts_table_idx | pgno | 3 | | | | | | - 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | - 48 | fts_table_content | c0 | 2 | | | | | | - 48 | fts_table_content | c1 | 3 | | | | | | - 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | - 49 | fts_table_docsize | sz | 2 | | | | | | - 50 | fts_table_config | k | 1 | | | | | | - 50 | fts_table_config | v | 2 | | | | | | - 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | - 51 | RO_RW_test | a | 2 | | 1073741824 | | | | - 51 | RO_RW_test | b | 3 | | | 53 | 2 | | - 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | - 52 | Unicode data | i | 1 | | 1073741824 | | | | - 52 | Unicode data | t | 2 | | 1073741824 | | | | - 53 | type_BOOLEAN_oper | i | 1 | | | | | | - 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | - 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | - 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | - 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | - 54 | ♁ | geom | 1 | | | | | | - 54 | ♁ | osm_type | 2 | 16 | 64 | | | | - 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | - 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | - 54 | ♁ | arr | 5 | | 1073741824 | | | | - 54 | ♁ | t | 6 | | | | | | - 55 | ♂ | id | 1 | | | 64 | 2 | 0 | - 55 | ♂ | UAI | 2 | 254 | 1016 | | | | - 55 | ♂ | ⌖ | 3 | | | | | | - 55 | ♂ | geom | 4 | | | | | | - 55 | ♂ | t₀ | 5 | | | | | | 0 - 55 | ♂ | class | 6 | | 1073741824 | | | | - 55 | ♂ | URL | 7 | 80 | 320 | | | | -(159 rows) - ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen -----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- - 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER - 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER - 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER - 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER - 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER - 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER - 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER - 5 | t | a | 1 | | | | 1 | NO | NO | NEVER - 5 | t | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER - 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER - 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER - 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER - 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER - 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER - 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER - 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER - 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER - 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER - 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER - 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER - 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER - 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER - 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER - 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER - 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER - 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER - 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER - 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER - 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER - 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER - 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER - 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER - 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER - 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER - 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER - 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER - 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER - 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER - 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER - 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER - 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER - 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER - 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER - 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER - 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER - 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER - 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER - 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER - 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER - 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER - 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER - 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER - 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER - 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER - 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER - 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER - 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER - 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER - 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER - 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER - 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER - 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER - 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER - 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER - 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER - 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER - 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER - 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER - 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER - 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER - 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER - 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER - 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER - 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER - 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER - 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER - 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER - 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER - 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER - 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER - 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER - 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER - 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER - 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER - 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER - 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER - 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER - 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER - 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER - 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER - 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER - 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER - 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER - 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER - 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER - 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER - 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER - 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER - 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER - 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER - 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER - 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER - 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER - 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER - 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER - 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER - 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER - 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER - 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER - 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER - 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER - 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER - 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER - 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER - 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER - 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER -(159 rows) - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - table_catalog | table_schema | table_name | column_name | option_name | option_value ---------------------+--------------+-------------------+---------------+-------------+-------------- - contrib_regression | public | department | department_id | key | true - contrib_regression | public | employee | emp_id | key | true - contrib_regression | public | empdata | emp_id | key | true - contrib_regression | public | numbers | a | key | true - contrib_regression | public | t | a | key | true - contrib_regression | public | multiprimary | b | key | true - contrib_regression | public | multiprimary | c | key | true - contrib_regression | public | columntest | a a | key | true - contrib_regression | public | columntest | b b | key | true - contrib_regression | public | limittest | id | key | true - contrib_regression | public | grem1_1 | a | key | true - contrib_regression | public | grem1_2 | a | key | true - contrib_regression | public | case_exp | c1 | key | true - contrib_regression | public | type_STRING | col | key | true - contrib_regression | public | type_BOOLEANpk | col | key | true - contrib_regression | public | type_BOOLEAN | i | key | true - contrib_regression | public | type_BYTE | col | key | true - contrib_regression | public | type_SINT | col | key | true - contrib_regression | public | type_BINT | col | key | true - contrib_regression | public | type_INTEGER | col | key | true - contrib_regression | public | type_FLOAT | col | key | true - contrib_regression | public | type_DOUBLE | col | key | true - contrib_regression | public | type_TIMESTAMP | col | key | true - contrib_regression | public | type_BLOB | col | key | true - contrib_regression | public | type_DATE | col | key | true - contrib_regression | public | type_TIME | col | key | true - contrib_regression | public | type_UUIDpk | col | key | true - contrib_regression | public | type_MACADDRpk | col | key | true - contrib_regression | public | type_MACADDR8pk | col | key | true - contrib_regression | public | BitT | p | key | true - contrib_regression | public | type_TEXT | col | key | true - contrib_regression | public | shorty | id | key | true - contrib_regression | public | A a | col | key | true - contrib_regression | public | fts_table_data | id | key | true - contrib_regression | public | fts_table_idx | segid | key | true - contrib_regression | public | fts_table_idx | term | key | true - contrib_regression | public | fts_table_content | id | key | true - contrib_regression | public | fts_table_docsize | id | key | true - contrib_regression | public | fts_table_config | k | key | true - contrib_regression | public | RO_RW_test | i | key | true - contrib_regression | public | Unicode data | i | key | true -(41 rows) - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/gis_ok/type.out b/expected/13.15/gis_ok/type.out deleted file mode 100644 index c5eccfaf..00000000 --- a/expected/13.15/gis_ok/type.out +++ /dev/null @@ -1,539 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col ---------------------------------------------- - [1,2,"foo",null] - {"bar":"baz","balance":7.77,"active":false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/libsqlite.out b/expected/13.15/libsqlite.out index 087bfd53..fe4fe2f8 100644 --- a/expected/13.15/libsqlite.out +++ b/expected/13.15/libsqlite.out @@ -22,9 +22,5 @@ SELECT sqlite_fdw_sqlite_code_source(); 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde (1 row) ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/13.15/sqlite_fdw.out b/expected/13.15/sqlite_fdw.out index e1be05d0..d972d0fb 100644 --- a/expected/13.15/sqlite_fdw.out +++ b/expected/13.15/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; diff --git a/expected/13.15/types/bitstring.out b/expected/13.15/types/bitstring.out new file mode 100644 index 00000000..211ddf3e --- /dev/null +++ b/expected/13.15/types/bitstring.out @@ -0,0 +1,807 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 02: +CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); +--Testcase 03: +DROP FOREIGN TABLE IF EXISTS "type_BIT+"; +NOTICE: foreign table "type_BIT+" does not exist, skipping +--Testcase 04: +CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); +--Testcase 05: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 06: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 07: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); +ERROR: bit string length 1 does not match type bit(6) +--Testcase 08: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); +ERROR: bit string length 2 does not match type bit(6) +--Testcase 09: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); +ERROR: bit string length 3 does not match type bit(6) +--Testcase 10: +INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); +--Testcase 11: +INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); +--Testcase 12: +INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); +--Testcase 13: +INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); +--Testcase 14: type mismatch with proper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 15: +SELECT * FROM "type_BIT+"; + i | b | t | l | bi +---+--------+---------+---+---- + 6 | 110110 | integer | 2 | 54 + 7 | 111001 | integer | 2 | 57 + 8 | 110000 | integer | 2 | 48 + 9 | 100001 | integer | 2 | 33 +(4 rows) + +--Testcase 16: +SELECT * FROM "type_BIT" WHERE b < '110110'; + i | b +---+-------- + 8 | 110000 + 9 | 100001 +(2 rows) + +--Testcase 17: +SELECT * FROM "type_BIT" WHERE b > '110110'; + i | b +---+-------- + 7 | 111001 +(1 row) + +--Testcase 18: +SELECT * FROM "type_BIT" WHERE b = '110110'; + i | b +---+-------- + 6 | 110110 +(1 row) + +--Testcase 20: +CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); +--Testcase 21: +DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; +NOTICE: foreign table "type_VARBIT+" does not exist, skipping +--Testcase 22: +CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); +--Testcase 23: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); +--Testcase 24: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); +--Testcase 25: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); +--Testcase 26: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); +--Testcase 27: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); +--Testcase 28: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); +--Testcase 29: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); +--Testcase 30: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); +--Testcase 31: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); +--Testcase 32: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); +--Testcase 33: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); +--Testcase 34: +SELECT * FROM "type_VARBIT+"; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 6 | 110110 | integer | 2 + 7 | 111001 | integer | 2 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(11 rows) + +--Testcase 35: +SELECT * FROM "type_VARBIT+" WHERE b < '110110'; + i | b | t | l +---+--------+---------+--- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 +(7 rows) + +--Testcase 36: +SELECT * FROM "type_VARBIT+" WHERE b > '110110'; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 7 | 111001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(3 rows) + +--Testcase 37: +SELECT * FROM "type_VARBIT+" WHERE b = '110110'; + i | b | t | l +---+--------+---------+--- + 6 | 110110 | integer | 2 +(1 row) + +--Testcase 38: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); +--Testcase 39: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); +--Testcase 40: very long bit string, expected ERROR, 65 bits +INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); +ERROR: SQLite FDW dosens't support very long bit/varbit data +HINT: bit length 65, maximum 64 +--Testcase 41: +SELECT * FROM "type_VARBIT+" WHERE "i" > 10; + i | b | t | l +----+-----------------------------------------------------------------+---------+---- + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 +(3 rows) + +--Testcase 42: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 111111 + 6 | 110110 | 8 | 110000 | 110110 + 6 | 110110 | 9 | 100001 | 110111 + 7 | 111001 | 6 | 110110 | 111111 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 111001 + 7 | 111001 | 9 | 100001 | 111001 + 8 | 110000 | 6 | 110110 | 110110 + 8 | 110000 | 7 | 111001 | 111001 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 110001 + 9 | 100001 | 6 | 110110 | 110111 + 9 | 100001 | 7 | 111001 | 111001 + 9 | 100001 | 8 | 110000 | 110001 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 43: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 110000 + 6 | 110110 | 8 | 110000 | 110000 + 6 | 110110 | 9 | 100001 | 100000 + 7 | 111001 | 6 | 110110 | 110000 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 110000 + 7 | 111001 | 9 | 100001 | 100001 + 8 | 110000 | 6 | 110110 | 110000 + 8 | 110000 | 7 | 111001 | 110000 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 100000 + 9 | 100001 | 6 | 110110 | 100000 + 9 | 100001 | 7 | 111001 | 100001 + 9 | 100001 | 8 | 110000 | 100000 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 44: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 000000 + 6 | 110110 | 7 | 111001 | 001111 + 6 | 110110 | 8 | 110000 | 000110 + 6 | 110110 | 9 | 100001 | 010111 + 7 | 111001 | 6 | 110110 | 001111 + 7 | 111001 | 7 | 111001 | 000000 + 7 | 111001 | 8 | 110000 | 001001 + 7 | 111001 | 9 | 100001 | 011000 + 8 | 110000 | 6 | 110110 | 000110 + 8 | 110000 | 7 | 111001 | 001001 + 8 | 110000 | 8 | 110000 | 000000 + 8 | 110000 | 9 | 100001 | 010001 + 9 | 100001 | 6 | 110110 | 010111 + 9 | 100001 | 7 | 111001 | 011000 + 9 | 100001 | 8 | 110000 | 010001 + 9 | 100001 | 9 | 100001 | 000000 +(16 rows) + +--Testcase 45: +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 46: +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 47: +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 +(4 rows) + +--Testcase 48: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 49: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 50: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 51: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 52: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b << 3) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 53: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (~ b) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 54: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot OR bit strings of different sizes +--Testcase 55: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot AND bit strings of different sizes +--Testcase 56: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot XOR bit strings of different sizes +--Testcase 57: +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 001 + 5 | 101 | 001 + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 +(13 rows) + +--Testcase 58: +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 000 + 5 | 101 | 000 + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 +(13 rows) + +--Testcase 59: +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 01 + 3 | 11 | 00 + 4 | 100 | 011 + 5 | 101 | 010 + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 +(13 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 61: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 62: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 63: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 64: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" << 3) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 65: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, (~ (b)::"bit") + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 66: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 67: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 68: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 69: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 70: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 71: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 72: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 73: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 74: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 75: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 76: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 77: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 78: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 79: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 80: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 81: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 82: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 83: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 84: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 85: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 86: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 87: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 88: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 89: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 90: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 91: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 92: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 93: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 94: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 95: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 005: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BIT" +drop cascades to foreign table "type_BIT+" +drop cascades to foreign table "type_VARBIT" +drop cascades to foreign table "type_VARBIT+" diff --git a/expected/13.15/types/bool.out b/expected/13.15/types/bool.out new file mode 100644 index 00000000..92c66f7e --- /dev/null +++ b/expected/13.15/types/bool.out @@ -0,0 +1,1273 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 000: +CREATE EXTENSION sqlite_fdw; +--Testcase 001: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 01: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; +--Testcase 02: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); +--Testcase 03: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); +--Testcase 04: +CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); +--Testcase 05: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; +--Testcase 06: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); +--Testcase 07: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); +--Testcase 08: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); +--Testcase 09: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); +--Testcase 10: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); +--Testcase 11: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); +--Testcase 12: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); +--Testcase 13: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); +--Testcase 14: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); +--Testcase 15: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); +--Testcase 16: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); +--Testcase 17: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); +--Testcase 18: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); +--Testcase 19: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); +--Testcase 20: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); +--Testcase 21: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); +--Testcase 22: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); +--Testcase 23: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); +--Testcase 24: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); +--Testcase 25: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); +--Testcase 26: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); +--Testcase 27: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); +--Testcase 28: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); +--Testcase 29: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); +--Testcase 30: +SELECT * FROM "type_BOOLEAN"; + i | b +----+------- + 1 | 1 + 2 | 0 + 3 | true + 4 | false + 5 | true + 6 | false + 7 | Yes + 8 | YeS + 9 | yes + 10 | no + 11 | No + 12 | nO + 13 | off + 14 | oFf + 15 | on + 16 | ON + 17 | t + 18 | T + 19 | Y + 20 | y + 21 | F + 22 | f + 23 | x + 24 | 0 + 25 | 1 + 26 | +(26 rows) + +--Testcase 31: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 32: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN"; + QUERY PLAN +--------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN" + Output: i, b + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" +(3 rows) + +--Testcase 33: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN+"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" + Output: i, b, t, l + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 34: ERR - invalid text affinity because not ISO:SQL text input +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "text" affinity (1 bytes) : 'x' +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 35 +DELETE FROM "type_BOOLEAN" WHERE i = 23; +--Testcase 36: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 37: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; + i | b | t | l +----+---+------+--- + 26 | | null | +(1 row) + +--Testcase 38: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 +(24 rows) + +--Testcase 39: +SELECT * FROM "type_BOOLEAN+" WHERE b; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 3 | t | text | 4 + 5 | t | text | 4 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 25 | t | integer | 1 +(13 rows) + +--Testcase 40: +SELECT * FROM "type_BOOLEAN+" WHERE NOT b; + i | b | t | l +----+---+---------+--- + 2 | f | integer | 1 + 4 | f | text | 5 + 6 | f | text | 5 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 +(11 rows) + +--Testcase 41: +CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 42: +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +--Testcase 43: +INSERT INTO "type_BOOLEANpk" VALUES (FALSE); +--Testcase 44: ERR - primary key +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) +--Testcase 45: +DELETE FROM "type_BOOLEANpk"; +--Testcase 46: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; +--Testcase 47: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); +--Testcase 48: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 49: ERR - invalid float for bool column +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "real" affinity : 3.14159265358979 +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 50 +DELETE FROM "type_BOOLEAN" WHERE i = 27; +--Testcase 51: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 52: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE b; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 53: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 54: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE b; + QUERY PLAN +------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 55: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE NOT b; + QUERY PLAN +------------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 56: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" b + Output: i, b, t, l, (NOT b) + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 57: +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + i | b | t | l | nb +----+---+---------+---+---- + 1 | t | integer | 1 | f + 2 | f | integer | 1 | t + 3 | t | text | 4 | f + 4 | f | text | 5 | t + 5 | t | text | 4 | f + 6 | f | text | 5 | t + 7 | t | text | 3 | f + 8 | t | text | 3 | f + 9 | t | text | 3 | f + 10 | f | text | 2 | t + 11 | f | text | 2 | t + 12 | f | text | 2 | t + 13 | f | text | 3 | t + 14 | f | text | 3 | t + 15 | t | text | 2 | f + 16 | t | text | 2 | f + 17 | t | text | 1 | f + 18 | t | text | 1 | f + 19 | t | text | 1 | f + 20 | t | text | 1 | f + 21 | f | text | 1 | t + 22 | f | text | 1 | t + 24 | f | integer | 1 | t + 25 | t | integer | 1 | f + 26 | | null | | +(25 rows) + +--Testcase 58: +CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); +--Testcase 59: see INIT.SQL with mixed affinity boolean data +SELECT * FROM "type_BOOLEAN_oper"; + i | i1 | b1 | i2 | b2 +-----+----+----+----+---- + 1 | 1 | t | 1 | t + 2 | 1 | t | 2 | t + 3 | 1 | t | 3 | t + 4 | 1 | t | 4 | t + 5 | 1 | t | 5 | t + 6 | 1 | t | 6 | t + 7 | 1 | t | 7 | t + 8 | 1 | t | 8 | t + 9 | 1 | t | 9 | t + 10 | 1 | t | 10 | t + 11 | 1 | t | 11 | t + 12 | 1 | t | 12 | t + 13 | 1 | t | 13 | t + 14 | 1 | t | 14 | f + 15 | 1 | t | 15 | f + 16 | 1 | t | 16 | f + 17 | 1 | t | 17 | f + 18 | 1 | t | 18 | f + 19 | 1 | t | 19 | f + 20 | 1 | t | 20 | f + 21 | 1 | t | 21 | f + 22 | 1 | t | 22 | f + 23 | 1 | t | 23 | f + 24 | 1 | t | 24 | f + 25 | 1 | t | 25 | f + 26 | 1 | t | 26 | f + 27 | 1 | t | 27 | + 28 | 2 | t | 1 | t + 29 | 2 | t | 2 | t + 30 | 2 | t | 3 | t + 31 | 2 | t | 4 | t + 32 | 2 | t | 5 | t + 33 | 2 | t | 6 | t + 34 | 2 | t | 7 | t + 35 | 2 | t | 8 | t + 36 | 2 | t | 9 | t + 37 | 2 | t | 10 | t + 38 | 2 | t | 11 | t + 39 | 2 | t | 12 | t + 40 | 2 | t | 13 | t + 41 | 2 | t | 14 | f + 42 | 2 | t | 15 | f + 43 | 2 | t | 16 | f + 44 | 2 | t | 17 | f + 45 | 2 | t | 18 | f + 46 | 2 | t | 19 | f + 47 | 2 | t | 20 | f + 48 | 2 | t | 21 | f + 49 | 2 | t | 22 | f + 50 | 2 | t | 23 | f + 51 | 2 | t | 24 | f + 52 | 2 | t | 25 | f + 53 | 2 | t | 26 | f + 54 | 2 | t | 27 | + 55 | 3 | t | 1 | t + 56 | 3 | t | 2 | t + 57 | 3 | t | 3 | t + 58 | 3 | t | 4 | t + 59 | 3 | t | 5 | t + 60 | 3 | t | 6 | t + 61 | 3 | t | 7 | t + 62 | 3 | t | 8 | t + 63 | 3 | t | 9 | t + 64 | 3 | t | 10 | t + 65 | 3 | t | 11 | t + 66 | 3 | t | 12 | t + 67 | 3 | t | 13 | t + 68 | 3 | t | 14 | f + 69 | 3 | t | 15 | f + 70 | 3 | t | 16 | f + 71 | 3 | t | 17 | f + 72 | 3 | t | 18 | f + 73 | 3 | t | 19 | f + 74 | 3 | t | 20 | f + 75 | 3 | t | 21 | f + 76 | 3 | t | 22 | f + 77 | 3 | t | 23 | f + 78 | 3 | t | 24 | f + 79 | 3 | t | 25 | f + 80 | 3 | t | 26 | f + 81 | 3 | t | 27 | + 82 | 4 | t | 1 | t + 83 | 4 | t | 2 | t + 84 | 4 | t | 3 | t + 85 | 4 | t | 4 | t + 86 | 4 | t | 5 | t + 87 | 4 | t | 6 | t + 88 | 4 | t | 7 | t + 89 | 4 | t | 8 | t + 90 | 4 | t | 9 | t + 91 | 4 | t | 10 | t + 92 | 4 | t | 11 | t + 93 | 4 | t | 12 | t + 94 | 4 | t | 13 | t + 95 | 4 | t | 14 | f + 96 | 4 | t | 15 | f + 97 | 4 | t | 16 | f + 98 | 4 | t | 17 | f + 99 | 4 | t | 18 | f + 100 | 4 | t | 19 | f + 101 | 4 | t | 20 | f + 102 | 4 | t | 21 | f + 103 | 4 | t | 22 | f + 104 | 4 | t | 23 | f + 105 | 4 | t | 24 | f + 106 | 4 | t | 25 | f + 107 | 4 | t | 26 | f + 108 | 4 | t | 27 | + 109 | 5 | t | 1 | t + 110 | 5 | t | 2 | t + 111 | 5 | t | 3 | t + 112 | 5 | t | 4 | t + 113 | 5 | t | 5 | t + 114 | 5 | t | 6 | t + 115 | 5 | t | 7 | t + 116 | 5 | t | 8 | t + 117 | 5 | t | 9 | t + 118 | 5 | t | 10 | t + 119 | 5 | t | 11 | t + 120 | 5 | t | 12 | t + 121 | 5 | t | 13 | t + 122 | 5 | t | 14 | f + 123 | 5 | t | 15 | f + 124 | 5 | t | 16 | f + 125 | 5 | t | 17 | f + 126 | 5 | t | 18 | f + 127 | 5 | t | 19 | f + 128 | 5 | t | 20 | f + 129 | 5 | t | 21 | f + 130 | 5 | t | 22 | f + 131 | 5 | t | 23 | f + 132 | 5 | t | 24 | f + 133 | 5 | t | 25 | f + 134 | 5 | t | 26 | f + 135 | 5 | t | 27 | + 136 | 6 | t | 1 | t + 137 | 6 | t | 2 | t + 138 | 6 | t | 3 | t + 139 | 6 | t | 4 | t + 140 | 6 | t | 5 | t + 141 | 6 | t | 6 | t + 142 | 6 | t | 7 | t + 143 | 6 | t | 8 | t + 144 | 6 | t | 9 | t + 145 | 6 | t | 10 | t + 146 | 6 | t | 11 | t + 147 | 6 | t | 12 | t + 148 | 6 | t | 13 | t + 149 | 6 | t | 14 | f + 150 | 6 | t | 15 | f + 151 | 6 | t | 16 | f + 152 | 6 | t | 17 | f + 153 | 6 | t | 18 | f + 154 | 6 | t | 19 | f + 155 | 6 | t | 20 | f + 156 | 6 | t | 21 | f + 157 | 6 | t | 22 | f + 158 | 6 | t | 23 | f + 159 | 6 | t | 24 | f + 160 | 6 | t | 25 | f + 161 | 6 | t | 26 | f + 162 | 6 | t | 27 | + 163 | 7 | t | 1 | t + 164 | 7 | t | 2 | t + 165 | 7 | t | 3 | t + 166 | 7 | t | 4 | t + 167 | 7 | t | 5 | t + 168 | 7 | t | 6 | t + 169 | 7 | t | 7 | t + 170 | 7 | t | 8 | t + 171 | 7 | t | 9 | t + 172 | 7 | t | 10 | t + 173 | 7 | t | 11 | t + 174 | 7 | t | 12 | t + 175 | 7 | t | 13 | t + 176 | 7 | t | 14 | f + 177 | 7 | t | 15 | f + 178 | 7 | t | 16 | f + 179 | 7 | t | 17 | f + 180 | 7 | t | 18 | f + 181 | 7 | t | 19 | f + 182 | 7 | t | 20 | f + 183 | 7 | t | 21 | f + 184 | 7 | t | 22 | f + 185 | 7 | t | 23 | f + 186 | 7 | t | 24 | f + 187 | 7 | t | 25 | f + 188 | 7 | t | 26 | f + 189 | 7 | t | 27 | + 190 | 8 | t | 1 | t + 191 | 8 | t | 2 | t + 192 | 8 | t | 3 | t + 193 | 8 | t | 4 | t + 194 | 8 | t | 5 | t + 195 | 8 | t | 6 | t + 196 | 8 | t | 7 | t + 197 | 8 | t | 8 | t + 198 | 8 | t | 9 | t + 199 | 8 | t | 10 | t + 200 | 8 | t | 11 | t + 201 | 8 | t | 12 | t + 202 | 8 | t | 13 | t + 203 | 8 | t | 14 | f + 204 | 8 | t | 15 | f + 205 | 8 | t | 16 | f + 206 | 8 | t | 17 | f + 207 | 8 | t | 18 | f + 208 | 8 | t | 19 | f + 209 | 8 | t | 20 | f + 210 | 8 | t | 21 | f + 211 | 8 | t | 22 | f + 212 | 8 | t | 23 | f + 213 | 8 | t | 24 | f + 214 | 8 | t | 25 | f + 215 | 8 | t | 26 | f + 216 | 8 | t | 27 | + 217 | 9 | t | 1 | t + 218 | 9 | t | 2 | t + 219 | 9 | t | 3 | t + 220 | 9 | t | 4 | t + 221 | 9 | t | 5 | t + 222 | 9 | t | 6 | t + 223 | 9 | t | 7 | t + 224 | 9 | t | 8 | t + 225 | 9 | t | 9 | t + 226 | 9 | t | 10 | t + 227 | 9 | t | 11 | t + 228 | 9 | t | 12 | t + 229 | 9 | t | 13 | t + 230 | 9 | t | 14 | f + 231 | 9 | t | 15 | f + 232 | 9 | t | 16 | f + 233 | 9 | t | 17 | f + 234 | 9 | t | 18 | f + 235 | 9 | t | 19 | f + 236 | 9 | t | 20 | f + 237 | 9 | t | 21 | f + 238 | 9 | t | 22 | f + 239 | 9 | t | 23 | f + 240 | 9 | t | 24 | f + 241 | 9 | t | 25 | f + 242 | 9 | t | 26 | f + 243 | 9 | t | 27 | + 244 | 10 | t | 1 | t + 245 | 10 | t | 2 | t + 246 | 10 | t | 3 | t + 247 | 10 | t | 4 | t + 248 | 10 | t | 5 | t + 249 | 10 | t | 6 | t + 250 | 10 | t | 7 | t + 251 | 10 | t | 8 | t + 252 | 10 | t | 9 | t + 253 | 10 | t | 10 | t + 254 | 10 | t | 11 | t + 255 | 10 | t | 12 | t + 256 | 10 | t | 13 | t + 257 | 10 | t | 14 | f + 258 | 10 | t | 15 | f + 259 | 10 | t | 16 | f + 260 | 10 | t | 17 | f + 261 | 10 | t | 18 | f + 262 | 10 | t | 19 | f + 263 | 10 | t | 20 | f + 264 | 10 | t | 21 | f + 265 | 10 | t | 22 | f + 266 | 10 | t | 23 | f + 267 | 10 | t | 24 | f + 268 | 10 | t | 25 | f + 269 | 10 | t | 26 | f + 270 | 10 | t | 27 | + 271 | 11 | t | 1 | t + 272 | 11 | t | 2 | t + 273 | 11 | t | 3 | t + 274 | 11 | t | 4 | t + 275 | 11 | t | 5 | t + 276 | 11 | t | 6 | t + 277 | 11 | t | 7 | t + 278 | 11 | t | 8 | t + 279 | 11 | t | 9 | t + 280 | 11 | t | 10 | t + 281 | 11 | t | 11 | t + 282 | 11 | t | 12 | t + 283 | 11 | t | 13 | t + 284 | 11 | t | 14 | f + 285 | 11 | t | 15 | f + 286 | 11 | t | 16 | f + 287 | 11 | t | 17 | f + 288 | 11 | t | 18 | f + 289 | 11 | t | 19 | f + 290 | 11 | t | 20 | f + 291 | 11 | t | 21 | f + 292 | 11 | t | 22 | f + 293 | 11 | t | 23 | f + 294 | 11 | t | 24 | f + 295 | 11 | t | 25 | f + 296 | 11 | t | 26 | f + 297 | 11 | t | 27 | + 298 | 12 | t | 1 | t + 299 | 12 | t | 2 | t + 300 | 12 | t | 3 | t + 301 | 12 | t | 4 | t + 302 | 12 | t | 5 | t + 303 | 12 | t | 6 | t + 304 | 12 | t | 7 | t + 305 | 12 | t | 8 | t + 306 | 12 | t | 9 | t + 307 | 12 | t | 10 | t + 308 | 12 | t | 11 | t + 309 | 12 | t | 12 | t + 310 | 12 | t | 13 | t + 311 | 12 | t | 14 | f + 312 | 12 | t | 15 | f + 313 | 12 | t | 16 | f + 314 | 12 | t | 17 | f + 315 | 12 | t | 18 | f + 316 | 12 | t | 19 | f + 317 | 12 | t | 20 | f + 318 | 12 | t | 21 | f + 319 | 12 | t | 22 | f + 320 | 12 | t | 23 | f + 321 | 12 | t | 24 | f + 322 | 12 | t | 25 | f + 323 | 12 | t | 26 | f + 324 | 12 | t | 27 | + 325 | 13 | t | 1 | t + 326 | 13 | t | 2 | t + 327 | 13 | t | 3 | t + 328 | 13 | t | 4 | t + 329 | 13 | t | 5 | t + 330 | 13 | t | 6 | t + 331 | 13 | t | 7 | t + 332 | 13 | t | 8 | t + 333 | 13 | t | 9 | t + 334 | 13 | t | 10 | t + 335 | 13 | t | 11 | t + 336 | 13 | t | 12 | t + 337 | 13 | t | 13 | t + 338 | 13 | t | 14 | f + 339 | 13 | t | 15 | f + 340 | 13 | t | 16 | f + 341 | 13 | t | 17 | f + 342 | 13 | t | 18 | f + 343 | 13 | t | 19 | f + 344 | 13 | t | 20 | f + 345 | 13 | t | 21 | f + 346 | 13 | t | 22 | f + 347 | 13 | t | 23 | f + 348 | 13 | t | 24 | f + 349 | 13 | t | 25 | f + 350 | 13 | t | 26 | f + 351 | 13 | t | 27 | + 352 | 14 | f | 1 | t + 353 | 14 | f | 2 | t + 354 | 14 | f | 3 | t + 355 | 14 | f | 4 | t + 356 | 14 | f | 5 | t + 357 | 14 | f | 6 | t + 358 | 14 | f | 7 | t + 359 | 14 | f | 8 | t + 360 | 14 | f | 9 | t + 361 | 14 | f | 10 | t + 362 | 14 | f | 11 | t + 363 | 14 | f | 12 | t + 364 | 14 | f | 13 | t + 365 | 14 | f | 14 | f + 366 | 14 | f | 15 | f + 367 | 14 | f | 16 | f + 368 | 14 | f | 17 | f + 369 | 14 | f | 18 | f + 370 | 14 | f | 19 | f + 371 | 14 | f | 20 | f + 372 | 14 | f | 21 | f + 373 | 14 | f | 22 | f + 374 | 14 | f | 23 | f + 375 | 14 | f | 24 | f + 376 | 14 | f | 25 | f + 377 | 14 | f | 26 | f + 378 | 14 | f | 27 | + 379 | 15 | f | 1 | t + 380 | 15 | f | 2 | t + 381 | 15 | f | 3 | t + 382 | 15 | f | 4 | t + 383 | 15 | f | 5 | t + 384 | 15 | f | 6 | t + 385 | 15 | f | 7 | t + 386 | 15 | f | 8 | t + 387 | 15 | f | 9 | t + 388 | 15 | f | 10 | t + 389 | 15 | f | 11 | t + 390 | 15 | f | 12 | t + 391 | 15 | f | 13 | t + 392 | 15 | f | 14 | f + 393 | 15 | f | 15 | f + 394 | 15 | f | 16 | f + 395 | 15 | f | 17 | f + 396 | 15 | f | 18 | f + 397 | 15 | f | 19 | f + 398 | 15 | f | 20 | f + 399 | 15 | f | 21 | f + 400 | 15 | f | 22 | f + 401 | 15 | f | 23 | f + 402 | 15 | f | 24 | f + 403 | 15 | f | 25 | f + 404 | 15 | f | 26 | f + 405 | 15 | f | 27 | + 406 | 16 | f | 1 | t + 407 | 16 | f | 2 | t + 408 | 16 | f | 3 | t + 409 | 16 | f | 4 | t + 410 | 16 | f | 5 | t + 411 | 16 | f | 6 | t + 412 | 16 | f | 7 | t + 413 | 16 | f | 8 | t + 414 | 16 | f | 9 | t + 415 | 16 | f | 10 | t + 416 | 16 | f | 11 | t + 417 | 16 | f | 12 | t + 418 | 16 | f | 13 | t + 419 | 16 | f | 14 | f + 420 | 16 | f | 15 | f + 421 | 16 | f | 16 | f + 422 | 16 | f | 17 | f + 423 | 16 | f | 18 | f + 424 | 16 | f | 19 | f + 425 | 16 | f | 20 | f + 426 | 16 | f | 21 | f + 427 | 16 | f | 22 | f + 428 | 16 | f | 23 | f + 429 | 16 | f | 24 | f + 430 | 16 | f | 25 | f + 431 | 16 | f | 26 | f + 432 | 16 | f | 27 | + 433 | 17 | f | 1 | t + 434 | 17 | f | 2 | t + 435 | 17 | f | 3 | t + 436 | 17 | f | 4 | t + 437 | 17 | f | 5 | t + 438 | 17 | f | 6 | t + 439 | 17 | f | 7 | t + 440 | 17 | f | 8 | t + 441 | 17 | f | 9 | t + 442 | 17 | f | 10 | t + 443 | 17 | f | 11 | t + 444 | 17 | f | 12 | t + 445 | 17 | f | 13 | t + 446 | 17 | f | 14 | f + 447 | 17 | f | 15 | f + 448 | 17 | f | 16 | f + 449 | 17 | f | 17 | f + 450 | 17 | f | 18 | f + 451 | 17 | f | 19 | f + 452 | 17 | f | 20 | f + 453 | 17 | f | 21 | f + 454 | 17 | f | 22 | f + 455 | 17 | f | 23 | f + 456 | 17 | f | 24 | f + 457 | 17 | f | 25 | f + 458 | 17 | f | 26 | f + 459 | 17 | f | 27 | + 460 | 18 | f | 1 | t + 461 | 18 | f | 2 | t + 462 | 18 | f | 3 | t + 463 | 18 | f | 4 | t + 464 | 18 | f | 5 | t + 465 | 18 | f | 6 | t + 466 | 18 | f | 7 | t + 467 | 18 | f | 8 | t + 468 | 18 | f | 9 | t + 469 | 18 | f | 10 | t + 470 | 18 | f | 11 | t + 471 | 18 | f | 12 | t + 472 | 18 | f | 13 | t + 473 | 18 | f | 14 | f + 474 | 18 | f | 15 | f + 475 | 18 | f | 16 | f + 476 | 18 | f | 17 | f + 477 | 18 | f | 18 | f + 478 | 18 | f | 19 | f + 479 | 18 | f | 20 | f + 480 | 18 | f | 21 | f + 481 | 18 | f | 22 | f + 482 | 18 | f | 23 | f + 483 | 18 | f | 24 | f + 484 | 18 | f | 25 | f + 485 | 18 | f | 26 | f + 486 | 18 | f | 27 | + 487 | 19 | f | 1 | t + 488 | 19 | f | 2 | t + 489 | 19 | f | 3 | t + 490 | 19 | f | 4 | t + 491 | 19 | f | 5 | t + 492 | 19 | f | 6 | t + 493 | 19 | f | 7 | t + 494 | 19 | f | 8 | t + 495 | 19 | f | 9 | t + 496 | 19 | f | 10 | t + 497 | 19 | f | 11 | t + 498 | 19 | f | 12 | t + 499 | 19 | f | 13 | t + 500 | 19 | f | 14 | f + 501 | 19 | f | 15 | f + 502 | 19 | f | 16 | f + 503 | 19 | f | 17 | f + 504 | 19 | f | 18 | f + 505 | 19 | f | 19 | f + 506 | 19 | f | 20 | f + 507 | 19 | f | 21 | f + 508 | 19 | f | 22 | f + 509 | 19 | f | 23 | f + 510 | 19 | f | 24 | f + 511 | 19 | f | 25 | f + 512 | 19 | f | 26 | f + 513 | 19 | f | 27 | + 514 | 20 | f | 1 | t + 515 | 20 | f | 2 | t + 516 | 20 | f | 3 | t + 517 | 20 | f | 4 | t + 518 | 20 | f | 5 | t + 519 | 20 | f | 6 | t + 520 | 20 | f | 7 | t + 521 | 20 | f | 8 | t + 522 | 20 | f | 9 | t + 523 | 20 | f | 10 | t + 524 | 20 | f | 11 | t + 525 | 20 | f | 12 | t + 526 | 20 | f | 13 | t + 527 | 20 | f | 14 | f + 528 | 20 | f | 15 | f + 529 | 20 | f | 16 | f + 530 | 20 | f | 17 | f + 531 | 20 | f | 18 | f + 532 | 20 | f | 19 | f + 533 | 20 | f | 20 | f + 534 | 20 | f | 21 | f + 535 | 20 | f | 22 | f + 536 | 20 | f | 23 | f + 537 | 20 | f | 24 | f + 538 | 20 | f | 25 | f + 539 | 20 | f | 26 | f + 540 | 20 | f | 27 | + 541 | 21 | f | 1 | t + 542 | 21 | f | 2 | t + 543 | 21 | f | 3 | t + 544 | 21 | f | 4 | t + 545 | 21 | f | 5 | t + 546 | 21 | f | 6 | t + 547 | 21 | f | 7 | t + 548 | 21 | f | 8 | t + 549 | 21 | f | 9 | t + 550 | 21 | f | 10 | t + 551 | 21 | f | 11 | t + 552 | 21 | f | 12 | t + 553 | 21 | f | 13 | t + 554 | 21 | f | 14 | f + 555 | 21 | f | 15 | f + 556 | 21 | f | 16 | f + 557 | 21 | f | 17 | f + 558 | 21 | f | 18 | f + 559 | 21 | f | 19 | f + 560 | 21 | f | 20 | f + 561 | 21 | f | 21 | f + 562 | 21 | f | 22 | f + 563 | 21 | f | 23 | f + 564 | 21 | f | 24 | f + 565 | 21 | f | 25 | f + 566 | 21 | f | 26 | f + 567 | 21 | f | 27 | + 568 | 22 | f | 1 | t + 569 | 22 | f | 2 | t + 570 | 22 | f | 3 | t + 571 | 22 | f | 4 | t + 572 | 22 | f | 5 | t + 573 | 22 | f | 6 | t + 574 | 22 | f | 7 | t + 575 | 22 | f | 8 | t + 576 | 22 | f | 9 | t + 577 | 22 | f | 10 | t + 578 | 22 | f | 11 | t + 579 | 22 | f | 12 | t + 580 | 22 | f | 13 | t + 581 | 22 | f | 14 | f + 582 | 22 | f | 15 | f + 583 | 22 | f | 16 | f + 584 | 22 | f | 17 | f + 585 | 22 | f | 18 | f + 586 | 22 | f | 19 | f + 587 | 22 | f | 20 | f + 588 | 22 | f | 21 | f + 589 | 22 | f | 22 | f + 590 | 22 | f | 23 | f + 591 | 22 | f | 24 | f + 592 | 22 | f | 25 | f + 593 | 22 | f | 26 | f + 594 | 22 | f | 27 | + 595 | 23 | f | 1 | t + 596 | 23 | f | 2 | t + 597 | 23 | f | 3 | t + 598 | 23 | f | 4 | t + 599 | 23 | f | 5 | t + 600 | 23 | f | 6 | t + 601 | 23 | f | 7 | t + 602 | 23 | f | 8 | t + 603 | 23 | f | 9 | t + 604 | 23 | f | 10 | t + 605 | 23 | f | 11 | t + 606 | 23 | f | 12 | t + 607 | 23 | f | 13 | t + 608 | 23 | f | 14 | f + 609 | 23 | f | 15 | f + 610 | 23 | f | 16 | f + 611 | 23 | f | 17 | f + 612 | 23 | f | 18 | f + 613 | 23 | f | 19 | f + 614 | 23 | f | 20 | f + 615 | 23 | f | 21 | f + 616 | 23 | f | 22 | f + 617 | 23 | f | 23 | f + 618 | 23 | f | 24 | f + 619 | 23 | f | 25 | f + 620 | 23 | f | 26 | f + 621 | 23 | f | 27 | + 622 | 24 | f | 1 | t + 623 | 24 | f | 2 | t + 624 | 24 | f | 3 | t + 625 | 24 | f | 4 | t + 626 | 24 | f | 5 | t + 627 | 24 | f | 6 | t + 628 | 24 | f | 7 | t + 629 | 24 | f | 8 | t + 630 | 24 | f | 9 | t + 631 | 24 | f | 10 | t + 632 | 24 | f | 11 | t + 633 | 24 | f | 12 | t + 634 | 24 | f | 13 | t + 635 | 24 | f | 14 | f + 636 | 24 | f | 15 | f + 637 | 24 | f | 16 | f + 638 | 24 | f | 17 | f + 639 | 24 | f | 18 | f + 640 | 24 | f | 19 | f + 641 | 24 | f | 20 | f + 642 | 24 | f | 21 | f + 643 | 24 | f | 22 | f + 644 | 24 | f | 23 | f + 645 | 24 | f | 24 | f + 646 | 24 | f | 25 | f + 647 | 24 | f | 26 | f + 648 | 24 | f | 27 | + 649 | 25 | f | 1 | t + 650 | 25 | f | 2 | t + 651 | 25 | f | 3 | t + 652 | 25 | f | 4 | t + 653 | 25 | f | 5 | t + 654 | 25 | f | 6 | t + 655 | 25 | f | 7 | t + 656 | 25 | f | 8 | t + 657 | 25 | f | 9 | t + 658 | 25 | f | 10 | t + 659 | 25 | f | 11 | t + 660 | 25 | f | 12 | t + 661 | 25 | f | 13 | t + 662 | 25 | f | 14 | f + 663 | 25 | f | 15 | f + 664 | 25 | f | 16 | f + 665 | 25 | f | 17 | f + 666 | 25 | f | 18 | f + 667 | 25 | f | 19 | f + 668 | 25 | f | 20 | f + 669 | 25 | f | 21 | f + 670 | 25 | f | 22 | f + 671 | 25 | f | 23 | f + 672 | 25 | f | 24 | f + 673 | 25 | f | 25 | f + 674 | 25 | f | 26 | f + 675 | 25 | f | 27 | + 676 | 26 | f | 1 | t + 677 | 26 | f | 2 | t + 678 | 26 | f | 3 | t + 679 | 26 | f | 4 | t + 680 | 26 | f | 5 | t + 681 | 26 | f | 6 | t + 682 | 26 | f | 7 | t + 683 | 26 | f | 8 | t + 684 | 26 | f | 9 | t + 685 | 26 | f | 10 | t + 686 | 26 | f | 11 | t + 687 | 26 | f | 12 | t + 688 | 26 | f | 13 | t + 689 | 26 | f | 14 | f + 690 | 26 | f | 15 | f + 691 | 26 | f | 16 | f + 692 | 26 | f | 17 | f + 693 | 26 | f | 18 | f + 694 | 26 | f | 19 | f + 695 | 26 | f | 20 | f + 696 | 26 | f | 21 | f + 697 | 26 | f | 22 | f + 698 | 26 | f | 23 | f + 699 | 26 | f | 24 | f + 700 | 26 | f | 25 | f + 701 | 26 | f | 26 | f + 702 | 26 | f | 27 | + 703 | 27 | | 1 | t + 704 | 27 | | 2 | t + 705 | 27 | | 3 | t + 706 | 27 | | 4 | t + 707 | 27 | | 5 | t + 708 | 27 | | 6 | t + 709 | 27 | | 7 | t + 710 | 27 | | 8 | t + 711 | 27 | | 9 | t + 712 | 27 | | 10 | t + 713 | 27 | | 11 | t + 714 | 27 | | 12 | t + 715 | 27 | | 13 | t + 716 | 27 | | 14 | f + 717 | 27 | | 15 | f + 718 | 27 | | 16 | f + 719 | 27 | | 17 | f + 720 | 27 | | 18 | f + 721 | 27 | | 19 | f + 722 | 27 | | 20 | f + 723 | 27 | | 21 | f + 724 | 27 | | 22 | f + 725 | 27 | | 23 | f + 726 | 27 | | 24 | f + 727 | 27 | | 25 | f + 728 | 27 | | 26 | f + 729 | 27 | | 27 | +(729 rows) + +--Testcase 60: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 61: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + b1 | b2 | a | o +----+----+---+--- + f | f | f | f + f | t | f | t + f | | f | + t | f | f | t + t | t | t | t + t | | | t + | f | f | + | t | | t + | | | +(9 rows) + +--Testcase 62: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 63: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + b1 | b2 | a | o +----+----+---+--- + t | t | t | t +(1 row) + +--Testcase 64: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 65: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + b1 | b2 | a | o +----+----+---+--- + f | t | f | t + t | f | f | t + t | t | t | t + t | | | t + | t | | t +(5 rows) + +--Testcase 66: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) +(3 rows) + +--Testcase 67: +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; +--Testcase 68: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + t | f + t | t + t | + | f + | t + | +(6 rows) + +--Testcase 69: +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; +--Testcase 70: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) +(3 rows) + +--Testcase 71: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | t + f | + | f + | +(5 rows) + +--Testcase 72: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Delete on public."type_BOOLEAN_oper" + -> Foreign Delete on public."type_BOOLEAN_oper" + SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) +(3 rows) + +--Testcase 73: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; +--Testcase 74: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | + | f + | +(4 rows) + +--Testcase 75: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; +--Testcase 76: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 77: +DELETE FROM "type_BOOLEAN_oper" WHERE b2; +--Testcase 78: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 79: +DELETE FROM "type_BOOLEAN"; +--Testcase 003: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BOOLEAN" +drop cascades to foreign table "type_BOOLEAN+" +drop cascades to foreign table "type_BOOLEANpk" +drop cascades to foreign table "type_BOOLEAN_oper" diff --git a/expected/13.15/types/macaddr.out b/expected/13.15/types/macaddr.out new file mode 100644 index 00000000..ebc24214 --- /dev/null +++ b/expected/13.15/types/macaddr.out @@ -0,0 +1,951 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); +--Testcase 012: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); +--Testcase 013: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); +--Testcase 014: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); +--Testcase 015: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); +--Testcase 016: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); +--Testcase 017: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); +--Testcase 018: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); +--Testcase 019: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); +--Testcase 020: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); +--Testcase 021: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); +--Testcase 022: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); +--Testcase 023: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); +--Testcase 024: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; +--Testcase 029: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); +--Testcase 030: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); +--Testcase 031: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); +--Testcase 032: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); +--Testcase 033: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); +--Testcase 034: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); +--Testcase 035: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); +--Testcase 036: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); +--Testcase 037: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); +--Testcase 038: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); +--Testcase 039: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); +--Testcase 040: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); +--Testcase 041: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); +--Testcase 042: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + -> Result + Output: 30, '08:00:2f:01:02:03'::macaddr +(3 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); +--Testcase 046: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); +--Testcase 047: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); +--Testcase 048: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); +--Testcase 049: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); +--Testcase 050: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); +--Testcase 051: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); +--Testcase 052: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); +--Testcase 053: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); +--Testcase 054: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); +--Testcase 055: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); +--Testcase 056: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); +--Testcase 057: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); +--Testcase 058: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + -> Result + Output: 44, '08:00:2f:01:02:03'::macaddr +(3 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); +--Testcase 062: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); +--Testcase 063: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); +--Testcase 064: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); +--Testcase 065: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); +--Testcase 066: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); +--Testcase 067: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); +--Testcase 068: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); +--Testcase 069: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); +--Testcase 070: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); +--Testcase 071: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); +--Testcase 072: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); +--Testcase 073: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); +--Testcase 074: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + -> Result + Output: 58, '08:00:2f:01:02:03'::macaddr +(3 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); +--Testcase 077: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); +--Testcase 108: +SELECT * FROM "type_MACADDR+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------+------+----+------------------- + 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; + i | m +----+------------------- + 63 | 00:00:00:00:00:01 + 64 | 00:00:00:00:00:02 + 65 | 00:00:00:00:00:03 + 66 | 00:00:01:00:00:00 + 67 | 00:00:02:00:00:00 + 68 | 00:00:03:00:00:00 + 60 | 01:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 62 | 03:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; + i | m +----+------------------- + 62 | 03:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 60 | 01:00:00:00:00:00 + 68 | 00:00:03:00:00:00 + 67 | 00:00:02:00:00:00 + 66 | 00:00:01:00:00:00 + 65 | 00:00:00:00:00:03 + 64 | 00:00:00:00:00:02 + 63 | 00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDRpk"; + col +------------------- + 01:02:03:04:05:06 + 01:02:03:04:05:06 + 01:02:03:04:05:06 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDRpk"; +--no macaddr operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m | '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m & '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m > '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m < '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m = '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m >= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <> '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR" +drop cascades to foreign table "type_MACADDR+" +drop cascades to foreign table "type_MACADDRpk" diff --git a/expected/13.15/types/macaddr8.out b/expected/13.15/types/macaddr8.out new file mode 100644 index 00000000..46affacc --- /dev/null +++ b/expected/13.15/types/macaddr8.out @@ -0,0 +1,952 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); +--Testcase 012: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); +--Testcase 013: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); +--Testcase 014: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); +--Testcase 015: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); +--Testcase 016: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); +--Testcase 017: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); +--Testcase 018: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); +--Testcase 019: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); +--Testcase 020: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); +--Testcase 021: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); +--Testcase 022: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); +--Testcase 023: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); +--Testcase 024: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; +--Testcase 029: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); +--Testcase 030: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); +--Testcase 031: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); +--Testcase 032: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); +--Testcase 033: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); +--Testcase 034: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); +--Testcase 035: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); +--Testcase 036: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); +--Testcase 037: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); +--Testcase 038: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); +--Testcase 039: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); +--Testcase 040: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); +--Testcase 041: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); +--Testcase 042: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + -> Result + Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 +(3 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); +--Testcase 046: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); +--Testcase 047: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); +--Testcase 048: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); +--Testcase 049: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); +--Testcase 050: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); +--Testcase 051: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); +--Testcase 052: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); +--Testcase 053: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); +--Testcase 054: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); +--Testcase 055: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); +--Testcase 056: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); +--Testcase 057: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); +--Testcase 058: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + -> Result + Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 +(3 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); +--Testcase 062: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); +--Testcase 063: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); +--Testcase 064: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); +--Testcase 065: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); +--Testcase 066: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); +--Testcase 067: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); +--Testcase 068: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); +--Testcase 069: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); +--Testcase 070: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); +--Testcase 071: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); +--Testcase 072: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); +--Testcase 073: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); +--Testcase 074: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + -> Result + Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 +(3 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); +--Testcase 077: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); +--Testcase 108: +SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------------+------+----+------------------------- + 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR8"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; + i | m +----+------------------------- + 63 | 00:00:00:00:00:00:00:01 + 64 | 00:00:00:00:00:00:00:02 + 65 | 00:00:00:00:00:00:00:03 + 66 | 00:00:00:00:01:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 62 | 03:00:00:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; + i | m +----+------------------------- + 62 | 03:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 66 | 00:00:00:00:01:00:00:00 + 65 | 00:00:00:00:00:00:00:03 + 64 | 00:00:00:00:00:00:00:02 + 63 | 00:00:00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +ERROR: option "column_type" provided more than once +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDR8pk"; + col +------------------------- + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDR8pk"; +--no macaddr8 operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR8" +drop cascades to foreign table "type_MACADDR8+" +drop cascades to foreign table "type_MACADDR8pk" diff --git a/expected/13.15/types/uuid.out b/expected/13.15/types/uuid.out new file mode 100644 index 00000000..f0141dea --- /dev/null +++ b/expected/13.15/types/uuid.out @@ -0,0 +1,546 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); +--Testcase 010: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; +--Testcase 011: +INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 012: +INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 013: +INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 014: +INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 015: +INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 016: +INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 017: +INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 018: +INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 019: +INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 020: +INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 021: +INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 022: +INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 023: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 024: +INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 025: +INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 026: +INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 027: +INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 029: +INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 030: +INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 031: +INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 032: +INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 033: +INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 034: +INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 035: +INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 036: +INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 037: +INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 038: +INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 039: +INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 040: +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 041: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + -> Result + Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(3 rows) + +--Testcase 042: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); +--Testcase 043: +INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 044: +INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 045: +INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 046: +INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 047: +INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 048: +INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 049: +INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 050: +INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 051: +INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 052: +INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 053: +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 054: +INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + -> Result + Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(3 rows) + +--Testcase 056: +CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); +--Testcase 057: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(40 rows) + +--Testcase 058: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 059: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 060: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 061: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 062: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 063: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 064: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 065: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 066: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 067: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; +--Testcase 068: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) +(3 rows) + +--Testcase 069: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) +(3 rows) + +--Testcase 071: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 072: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; +--Testcase 073: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) +(3 rows) + +--Testcase 074: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(21 rows) + +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; +--Testcase 076: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 +(1 row) + +--Testcase 077: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 077: +SELECT * FROM "type_UUID+"; + i | u | t | l +---+---+---+--- +(0 rows) + +--Testcase 078: +INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); +--Testcase 079: +SELECT * FROM "type_UUID+" WHERE "i" = 41; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 +(1 row) + +--Testcase 080: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; +--Testcase 081: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 082: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 083: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) +(3 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 086: +INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); +--Testcase 087: +INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); +--Testcase 088: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 089: +SELECT * FROM "type_UUID+" WHERE "i" = 42; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 090: +SELECT * FROM "type_UUID+" WHERE "i" = 43; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 091: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); + QUERY PLAN +---------------------------------------------------------------------------- + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) +(3 rows) + +--Testcase 092: +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); +--Testcase 093: +INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); +--Testcase 094: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 + 44 | | null | +(2 rows) + +--Testcase 095: +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + i | u | t | l +----+---+------+--- + 44 | | null | +(1 row) + +--Testcase 096: +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) +(3 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) +(3 rows) + +--Testcase 100: +CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 101: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); +--Testcase 102: +INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 103: +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 104: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(2 rows) + +--Testcase 105: ERR - primary key +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) +--Testcase 106: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 107: NO ERR, but the same semantics! +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 108: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(3 rows) + +--Testcase 109: +DELETE FROM "type_UUIDpk"; +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_UUID" +drop cascades to foreign table "type_UUID+" +drop cascades to foreign table "type_UUIDpk" diff --git a/expected/13.15/gis_no/auto_import.out b/expected/13.15/with_gis_support/auto_import.out similarity index 99% rename from expected/13.15/gis_no/auto_import.out rename to expected/13.15/with_gis_support/auto_import.out index c293b864..4c399770 100644 --- a/expected/13.15/gis_no/auto_import.out +++ b/expected/13.15/with_gis_support/auto_import.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 02: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 05: diff --git a/expected/13.15/types/postgis.out b/expected/13.15/with_gis_support/postgis.out similarity index 99% rename from expected/13.15/types/postgis.out rename to expected/13.15/with_gis_support/postgis.out index 6fa60f26..6ce3d2b7 100644 --- a/expected/13.15/types/postgis.out +++ b/expected/13.15/with_gis_support/postgis.out @@ -4,7 +4,8 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; +NOTICE: extension "postgis" already exists, skipping --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/expected/14.12/gis_no/type.out b/expected/13.15/with_gis_support/type.out similarity index 98% rename from expected/14.12/gis_no/type.out rename to expected/13.15/with_gis_support/type.out index a5f43f4d..ab47b70c 100644 --- a/expected/14.12/gis_no/type.out +++ b/expected/13.15/with_gis_support/type.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 45: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -495,7 +493,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +512,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf diff --git a/expected/14.12/gis_no/auto_import.out b/expected/13.15/without_gis_support/auto_import.out similarity index 99% rename from expected/14.12/gis_no/auto_import.out rename to expected/13.15/without_gis_support/auto_import.out index c293b864..4c399770 100644 --- a/expected/14.12/gis_no/auto_import.out +++ b/expected/13.15/without_gis_support/auto_import.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 02: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 05: diff --git a/expected/13.15/types/nogis.out b/expected/13.15/without_gis_support/nogis.out similarity index 100% rename from expected/13.15/types/nogis.out rename to expected/13.15/without_gis_support/nogis.out diff --git a/expected/13.15/gis_no/type.out b/expected/13.15/without_gis_support/type.out similarity index 98% rename from expected/13.15/gis_no/type.out rename to expected/13.15/without_gis_support/type.out index a5f43f4d..ab47b70c 100644 --- a/expected/13.15/gis_no/type.out +++ b/expected/13.15/without_gis_support/type.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 45: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -495,7 +493,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +512,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf diff --git a/expected/14.12/extra/insert.out b/expected/14.12/extra/insert.out index 7eb38134..da7e85c3 100644 --- a/expected/14.12/extra/insert.out +++ b/expected/14.12/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite primary result code 19, extended result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/14.12/extra/sqlite_fdw_post.out b/expected/14.12/extra/sqlite_fdw_post.out index ae6dc0b6..3c3faabf 100644 --- a/expected/14.12/extra/sqlite_fdw_post.out +++ b/expected/14.12/extra/sqlite_fdw_post.out @@ -6565,7 +6565,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6576,12 +6576,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -6987,12 +6987,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/14.12/gis_ok/auto_import.out b/expected/14.12/gis_ok/auto_import.out deleted file mode 100644 index ec81e744..00000000 --- a/expected/14.12/gis_ok/auto_import.out +++ /dev/null @@ -1,638 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n ------------------------+----------------------+--------------------+------------------------+---------------------+---- - contrib_regression | public | department | contrib_regression | sqlite_svr | 1 - contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 - contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 - contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 - contrib_regression | public | t | contrib_regression | sqlite_svr | 5 - contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 - contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 - contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 - contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 - contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 - contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 - contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 - contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 - contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 - contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 - contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 - contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 - contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 - contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 - contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 - contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 - contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 - contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 - contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 - contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 - contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 - contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 - contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 - contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 - contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 - contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 - contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 - contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 - contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 - contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 - contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 - contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 - contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 - contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 - contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 - contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 - contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 - contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 - contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 - contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 - contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 - contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 - contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 - contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 - contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 - contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 - contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 - contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 - contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 - contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 -(55 rows) - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; - n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name -----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- - 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 - 1 | department | department_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric - 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 - 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar - 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 - 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 - 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 - 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 - 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | b | 2 | | YES | text | pg_catalog | text - 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 - 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 - 9 | limittest | y | 3 | | YES | text | pg_catalog | text - 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 - 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text - 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar - 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text - 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool - 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 - 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool - 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar - 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 - 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 - 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 - 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 - 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 - 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp - 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp - 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea - 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date - 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time - 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 - 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit - 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 - 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit - 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid - 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 - 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid - 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr - 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 - 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr - 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 - 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 - 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 - 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography - 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric - 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography - 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json - 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar - 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text - 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json - 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text - 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar - 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text - 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text - 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 - 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit - 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit - 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea - 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 - 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar - 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar - 39 | typetest | t | 4 | | YES | text | pg_catalog | text - 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp - 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp - 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text - 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar - 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text - 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text - 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text - 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text - 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text - 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea - 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date - 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text - 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar - 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 - 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json - 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 - 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 - 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar - 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 - 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea - 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea - 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 - 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea - 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 - 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea - 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 - 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea - 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea - 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea - 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 - 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text - 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 - 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 - 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text - 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text - 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry - 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar - 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text - 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb - 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 - 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date - 55 | ♂ | class | 6 | | YES | text | pg_catalog | text - 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar -(159 rows) - ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; - n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp -----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- - 1 | department | department_id | 1 | | | 64 | 2 | 0 | - 1 | department | department_name | 2 | | 1073741824 | | | | - 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | - 2 | employee | emp_name | 2 | | 1073741824 | | | | - 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | - 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | - 3 | empdata | emp_dat | 2 | | | | 10 | | - 4 | numbers | a | 1 | | | 64 | 2 | 0 | - 4 | numbers | b | 2 | 255 | 1020 | | | | - 5 | t | a | 1 | | | 64 | 2 | 0 | - 5 | t | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | - 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | - 7 | columntest | a a | 1 | | | 64 | 2 | 0 | - 7 | columntest | b b | 2 | | | 64 | 2 | 0 | - 7 | columntest | c c | 3 | | | 64 | 2 | 0 | - 8 | noprimary | a | 1 | | | 64 | 2 | 0 | - 8 | noprimary | b | 2 | | 1073741824 | | | | - 9 | limittest | id | 1 | | | 64 | 2 | 0 | - 9 | limittest | x | 2 | | | 64 | 2 | 0 | - 9 | limittest | y | 3 | | 1073741824 | | | | - 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | - 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c3 | 2 | | 1073741824 | | | | - 12 | case_exp | c6 | 3 | 10 | 40 | | | | - 13 | type_STRING | col | 1 | | 1073741824 | | | | - 14 | type_BOOLEANpk | col | 1 | | | | | | - 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | - 15 | type_BOOLEAN | b | 2 | | | | | | - 16 | type_BYTE | col | 1 | 1 | 4 | | | | - 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | - 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | - 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | - 20 | type_FLOAT | col | 1 | | | 53 | 2 | | - 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | - 22 | type_TIMESTAMP | col | 1 | | | | | | 6 - 22 | type_TIMESTAMP | b | 2 | | | | | | 6 - 23 | type_BLOB | col | 1 | | | | | | - 24 | type_DATE | col | 1 | | | | | | 0 - 25 | type_TIME | col | 1 | | | | | | 6 - 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | - 26 | type_BIT | b | 2 | 1 | | | | | - 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | - 27 | type_VARBIT | b | 2 | 1 | | | | | - 28 | type_UUIDpk | col | 1 | | | | | | - 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | - 29 | type_UUID | u | 2 | | | | | | - 30 | type_MACADDRpk | col | 1 | | | | | | - 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | - 31 | type_MACADDR | m | 2 | | | | | | - 32 | type_MACADDR8pk | col | 1 | | | | | | - 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | - 33 | type_MACADDR8 | m | 2 | | | | | | - 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | - 34 | types_PostGIS | gm | 2 | | | | | | - 34 | types_PostGIS | gg | 3 | | | | | | - 34 | types_PostGIS | r | 4 | | | | 10 | | - 34 | types_PostGIS | t | 5 | | 1073741824 | | | | - 34 | types_PostGIS | gm1 | 6 | | | | | | - 34 | types_PostGIS | gg1 | 7 | | | | | | - 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | - 35 | type_JSON | j | 2 | | | | | | - 35 | type_JSON | ot | 3 | 8 | 32 | | | | - 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | - 35 | type_JSON | q | 5 | | 1073741824 | | | | - 35 | type_JSON | j1 | 6 | | | | | | - 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | - 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | - 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | - 36 | type_JSONB | j | 2 | | | | | | - 36 | type_JSONB | ot | 3 | 8 | 32 | | | | - 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | - 36 | type_JSONB | q | 5 | | 1073741824 | | | | - 36 | type_JSONB | j1 | 6 | | | | | | - 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | - 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | - 37 | BitT | p | 1 | | | 64 | 2 | 0 | - 37 | BitT | a | 2 | 3 | | | | | - 37 | BitT | b | 3 | 5 | | | | | - 38 | notype | a | 1 | | | | | | - 39 | typetest | i | 1 | | | 64 | 2 | 0 | - 39 | typetest | v | 2 | 10 | 40 | | | | - 39 | typetest | c | 3 | 10 | 40 | | | | - 39 | typetest | t | 4 | | 1073741824 | | | | - 39 | typetest | d | 5 | | | | | | 6 - 39 | typetest | ti | 6 | | | | | | 6 - 40 | type_TEXT | col | 1 | | 1073741824 | | | | - 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | - 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | - 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | - 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | - 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | - 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | - 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | - 41 | alltypetest | c8 | 8 | 10 | 40 | | | | - 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | - 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | - 41 | alltypetest | c11 | 11 | | 1073741824 | | | | - 41 | alltypetest | c12 | 12 | | 1073741824 | | | | - 41 | alltypetest | c13 | 13 | | 1073741824 | | | | - 41 | alltypetest | c14 | 14 | | 1073741824 | | | | - 41 | alltypetest | c15 | 15 | | 1073741824 | | | | - 41 | alltypetest | c16 | 16 | | | | | | - 41 | alltypetest | c17 | 17 | | | 53 | 2 | | - 41 | alltypetest | c18 | 18 | | | 53 | 2 | | - 41 | alltypetest | c19 | 19 | | | 53 | 2 | | - 41 | alltypetest | c20 | 20 | | | 53 | 2 | | - 41 | alltypetest | c21 | 21 | | | | 10 | | - 41 | alltypetest | c22 | 22 | | | | 10 | | - 41 | alltypetest | c23 | 23 | | | | | | 0 - 41 | alltypetest | c24 | 24 | | | | | | 6 - 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | - 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | - 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | - 42 | json_osm_test | tags | 4 | | | | | | - 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | - 43 | shorty | id | 1 | | | 64 | 2 | 0 | - 43 | shorty | c | 2 | 10 | 40 | | | | - 44 | A a | col | 1 | | | 64 | 2 | 0 | - 45 | fts_table | name | 1 | | | | | | - 45 | fts_table | description | 2 | | | | | | - 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | - 46 | fts_table_data | block | 2 | | | | | | - 47 | fts_table_idx | segid | 1 | | | | | | - 47 | fts_table_idx | term | 2 | | | | | | - 47 | fts_table_idx | pgno | 3 | | | | | | - 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | - 48 | fts_table_content | c0 | 2 | | | | | | - 48 | fts_table_content | c1 | 3 | | | | | | - 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | - 49 | fts_table_docsize | sz | 2 | | | | | | - 50 | fts_table_config | k | 1 | | | | | | - 50 | fts_table_config | v | 2 | | | | | | - 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | - 51 | RO_RW_test | a | 2 | | 1073741824 | | | | - 51 | RO_RW_test | b | 3 | | | 53 | 2 | | - 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | - 52 | Unicode data | i | 1 | | 1073741824 | | | | - 52 | Unicode data | t | 2 | | 1073741824 | | | | - 53 | type_BOOLEAN_oper | i | 1 | | | | | | - 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | - 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | - 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | - 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | - 54 | ♁ | geom | 1 | | | | | | - 54 | ♁ | osm_type | 2 | 16 | 64 | | | | - 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | - 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | - 54 | ♁ | arr | 5 | | 1073741824 | | | | - 54 | ♁ | t | 6 | | | | | | - 55 | ♂ | id | 1 | | | 64 | 2 | 0 | - 55 | ♂ | UAI | 2 | 254 | 1016 | | | | - 55 | ♂ | ⌖ | 3 | | | | | | - 55 | ♂ | geom | 4 | | | | | | - 55 | ♂ | t₀ | 5 | | | | | | 0 - 55 | ♂ | class | 6 | | 1073741824 | | | | - 55 | ♂ | URL | 7 | 80 | 320 | | | | -(159 rows) - ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen -----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- - 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER - 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER - 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER - 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER - 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER - 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER - 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER - 5 | t | a | 1 | | | | 1 | NO | NO | NEVER - 5 | t | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER - 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER - 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER - 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER - 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER - 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER - 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER - 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER - 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER - 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER - 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER - 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER - 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER - 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER - 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER - 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER - 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER - 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER - 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER - 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER - 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER - 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER - 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER - 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER - 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER - 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER - 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER - 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER - 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER - 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER - 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER - 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER - 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER - 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER - 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER - 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER - 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER - 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER - 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER - 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER - 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER - 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER - 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER - 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER - 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER - 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER - 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER - 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER - 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER - 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER - 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER - 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER - 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER - 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER - 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER - 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER - 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER - 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER - 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER - 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER - 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER - 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER - 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER - 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER - 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER - 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER - 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER - 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER - 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER - 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER - 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER - 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER - 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER - 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER - 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER - 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER - 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER - 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER - 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER - 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER - 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER - 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER - 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER - 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER - 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER - 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER - 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER - 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER - 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER - 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER - 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER - 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER - 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER - 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER - 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER - 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER - 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER - 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER - 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER - 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER - 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER - 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER - 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER - 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER - 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER - 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER - 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER - 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER -(159 rows) - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - table_catalog | table_schema | table_name | column_name | option_name | option_value ---------------------+--------------+-------------------+---------------+-------------+-------------- - contrib_regression | public | department | department_id | key | true - contrib_regression | public | employee | emp_id | key | true - contrib_regression | public | empdata | emp_id | key | true - contrib_regression | public | numbers | a | key | true - contrib_regression | public | t | a | key | true - contrib_regression | public | multiprimary | b | key | true - contrib_regression | public | multiprimary | c | key | true - contrib_regression | public | columntest | a a | key | true - contrib_regression | public | columntest | b b | key | true - contrib_regression | public | limittest | id | key | true - contrib_regression | public | grem1_1 | a | key | true - contrib_regression | public | grem1_2 | a | key | true - contrib_regression | public | case_exp | c1 | key | true - contrib_regression | public | type_STRING | col | key | true - contrib_regression | public | type_BOOLEANpk | col | key | true - contrib_regression | public | type_BOOLEAN | i | key | true - contrib_regression | public | type_BYTE | col | key | true - contrib_regression | public | type_SINT | col | key | true - contrib_regression | public | type_BINT | col | key | true - contrib_regression | public | type_INTEGER | col | key | true - contrib_regression | public | type_FLOAT | col | key | true - contrib_regression | public | type_DOUBLE | col | key | true - contrib_regression | public | type_TIMESTAMP | col | key | true - contrib_regression | public | type_BLOB | col | key | true - contrib_regression | public | type_DATE | col | key | true - contrib_regression | public | type_TIME | col | key | true - contrib_regression | public | type_UUIDpk | col | key | true - contrib_regression | public | type_MACADDRpk | col | key | true - contrib_regression | public | type_MACADDR8pk | col | key | true - contrib_regression | public | BitT | p | key | true - contrib_regression | public | type_TEXT | col | key | true - contrib_regression | public | shorty | id | key | true - contrib_regression | public | A a | col | key | true - contrib_regression | public | fts_table_data | id | key | true - contrib_regression | public | fts_table_idx | segid | key | true - contrib_regression | public | fts_table_idx | term | key | true - contrib_regression | public | fts_table_content | id | key | true - contrib_regression | public | fts_table_docsize | id | key | true - contrib_regression | public | fts_table_config | k | key | true - contrib_regression | public | RO_RW_test | i | key | true - contrib_regression | public | Unicode data | i | key | true -(41 rows) - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/gis_ok/type.out b/expected/14.12/gis_ok/type.out deleted file mode 100644 index c5eccfaf..00000000 --- a/expected/14.12/gis_ok/type.out +++ /dev/null @@ -1,539 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col ---------------------------------------------- - [1,2,"foo",null] - {"bar":"baz","balance":7.77,"active":false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/libsqlite.out b/expected/14.12/libsqlite.out index 087bfd53..fe4fe2f8 100644 --- a/expected/14.12/libsqlite.out +++ b/expected/14.12/libsqlite.out @@ -22,9 +22,5 @@ SELECT sqlite_fdw_sqlite_code_source(); 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde (1 row) ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/14.12/sqlite_fdw.out b/expected/14.12/sqlite_fdw.out index afaec02c..522e474c 100644 --- a/expected/14.12/sqlite_fdw.out +++ b/expected/14.12/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; diff --git a/expected/14.12/types/bitstring.out b/expected/14.12/types/bitstring.out new file mode 100644 index 00000000..211ddf3e --- /dev/null +++ b/expected/14.12/types/bitstring.out @@ -0,0 +1,807 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 02: +CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); +--Testcase 03: +DROP FOREIGN TABLE IF EXISTS "type_BIT+"; +NOTICE: foreign table "type_BIT+" does not exist, skipping +--Testcase 04: +CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); +--Testcase 05: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 06: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 07: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); +ERROR: bit string length 1 does not match type bit(6) +--Testcase 08: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); +ERROR: bit string length 2 does not match type bit(6) +--Testcase 09: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); +ERROR: bit string length 3 does not match type bit(6) +--Testcase 10: +INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); +--Testcase 11: +INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); +--Testcase 12: +INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); +--Testcase 13: +INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); +--Testcase 14: type mismatch with proper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 15: +SELECT * FROM "type_BIT+"; + i | b | t | l | bi +---+--------+---------+---+---- + 6 | 110110 | integer | 2 | 54 + 7 | 111001 | integer | 2 | 57 + 8 | 110000 | integer | 2 | 48 + 9 | 100001 | integer | 2 | 33 +(4 rows) + +--Testcase 16: +SELECT * FROM "type_BIT" WHERE b < '110110'; + i | b +---+-------- + 8 | 110000 + 9 | 100001 +(2 rows) + +--Testcase 17: +SELECT * FROM "type_BIT" WHERE b > '110110'; + i | b +---+-------- + 7 | 111001 +(1 row) + +--Testcase 18: +SELECT * FROM "type_BIT" WHERE b = '110110'; + i | b +---+-------- + 6 | 110110 +(1 row) + +--Testcase 20: +CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); +--Testcase 21: +DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; +NOTICE: foreign table "type_VARBIT+" does not exist, skipping +--Testcase 22: +CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); +--Testcase 23: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); +--Testcase 24: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); +--Testcase 25: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); +--Testcase 26: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); +--Testcase 27: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); +--Testcase 28: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); +--Testcase 29: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); +--Testcase 30: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); +--Testcase 31: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); +--Testcase 32: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); +--Testcase 33: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); +--Testcase 34: +SELECT * FROM "type_VARBIT+"; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 6 | 110110 | integer | 2 + 7 | 111001 | integer | 2 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(11 rows) + +--Testcase 35: +SELECT * FROM "type_VARBIT+" WHERE b < '110110'; + i | b | t | l +---+--------+---------+--- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 +(7 rows) + +--Testcase 36: +SELECT * FROM "type_VARBIT+" WHERE b > '110110'; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 7 | 111001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(3 rows) + +--Testcase 37: +SELECT * FROM "type_VARBIT+" WHERE b = '110110'; + i | b | t | l +---+--------+---------+--- + 6 | 110110 | integer | 2 +(1 row) + +--Testcase 38: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); +--Testcase 39: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); +--Testcase 40: very long bit string, expected ERROR, 65 bits +INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); +ERROR: SQLite FDW dosens't support very long bit/varbit data +HINT: bit length 65, maximum 64 +--Testcase 41: +SELECT * FROM "type_VARBIT+" WHERE "i" > 10; + i | b | t | l +----+-----------------------------------------------------------------+---------+---- + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 +(3 rows) + +--Testcase 42: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 111111 + 6 | 110110 | 8 | 110000 | 110110 + 6 | 110110 | 9 | 100001 | 110111 + 7 | 111001 | 6 | 110110 | 111111 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 111001 + 7 | 111001 | 9 | 100001 | 111001 + 8 | 110000 | 6 | 110110 | 110110 + 8 | 110000 | 7 | 111001 | 111001 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 110001 + 9 | 100001 | 6 | 110110 | 110111 + 9 | 100001 | 7 | 111001 | 111001 + 9 | 100001 | 8 | 110000 | 110001 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 43: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 110000 + 6 | 110110 | 8 | 110000 | 110000 + 6 | 110110 | 9 | 100001 | 100000 + 7 | 111001 | 6 | 110110 | 110000 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 110000 + 7 | 111001 | 9 | 100001 | 100001 + 8 | 110000 | 6 | 110110 | 110000 + 8 | 110000 | 7 | 111001 | 110000 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 100000 + 9 | 100001 | 6 | 110110 | 100000 + 9 | 100001 | 7 | 111001 | 100001 + 9 | 100001 | 8 | 110000 | 100000 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 44: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 000000 + 6 | 110110 | 7 | 111001 | 001111 + 6 | 110110 | 8 | 110000 | 000110 + 6 | 110110 | 9 | 100001 | 010111 + 7 | 111001 | 6 | 110110 | 001111 + 7 | 111001 | 7 | 111001 | 000000 + 7 | 111001 | 8 | 110000 | 001001 + 7 | 111001 | 9 | 100001 | 011000 + 8 | 110000 | 6 | 110110 | 000110 + 8 | 110000 | 7 | 111001 | 001001 + 8 | 110000 | 8 | 110000 | 000000 + 8 | 110000 | 9 | 100001 | 010001 + 9 | 100001 | 6 | 110110 | 010111 + 9 | 100001 | 7 | 111001 | 011000 + 9 | 100001 | 8 | 110000 | 010001 + 9 | 100001 | 9 | 100001 | 000000 +(16 rows) + +--Testcase 45: +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 46: +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 47: +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 +(4 rows) + +--Testcase 48: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 49: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 50: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 51: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 52: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b << 3) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 53: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (~ b) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 54: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot OR bit strings of different sizes +--Testcase 55: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot AND bit strings of different sizes +--Testcase 56: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot XOR bit strings of different sizes +--Testcase 57: +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 001 + 5 | 101 | 001 + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 +(13 rows) + +--Testcase 58: +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 000 + 5 | 101 | 000 + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 +(13 rows) + +--Testcase 59: +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 01 + 3 | 11 | 00 + 4 | 100 | 011 + 5 | 101 | 010 + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 +(13 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 61: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 62: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 63: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 64: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" << 3) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 65: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, (~ (b)::"bit") + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 66: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 67: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 68: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 69: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 70: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 71: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 72: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 73: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 74: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 75: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 76: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 77: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 78: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 79: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 80: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 81: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 82: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 83: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 84: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 85: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 86: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 87: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 88: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 89: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 90: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 91: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 92: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 93: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 94: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 95: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 005: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BIT" +drop cascades to foreign table "type_BIT+" +drop cascades to foreign table "type_VARBIT" +drop cascades to foreign table "type_VARBIT+" diff --git a/expected/14.12/types/bool.out b/expected/14.12/types/bool.out new file mode 100644 index 00000000..92c66f7e --- /dev/null +++ b/expected/14.12/types/bool.out @@ -0,0 +1,1273 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 000: +CREATE EXTENSION sqlite_fdw; +--Testcase 001: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 01: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; +--Testcase 02: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); +--Testcase 03: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); +--Testcase 04: +CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); +--Testcase 05: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; +--Testcase 06: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); +--Testcase 07: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); +--Testcase 08: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); +--Testcase 09: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); +--Testcase 10: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); +--Testcase 11: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); +--Testcase 12: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); +--Testcase 13: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); +--Testcase 14: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); +--Testcase 15: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); +--Testcase 16: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); +--Testcase 17: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); +--Testcase 18: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); +--Testcase 19: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); +--Testcase 20: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); +--Testcase 21: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); +--Testcase 22: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); +--Testcase 23: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); +--Testcase 24: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); +--Testcase 25: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); +--Testcase 26: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); +--Testcase 27: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); +--Testcase 28: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); +--Testcase 29: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); +--Testcase 30: +SELECT * FROM "type_BOOLEAN"; + i | b +----+------- + 1 | 1 + 2 | 0 + 3 | true + 4 | false + 5 | true + 6 | false + 7 | Yes + 8 | YeS + 9 | yes + 10 | no + 11 | No + 12 | nO + 13 | off + 14 | oFf + 15 | on + 16 | ON + 17 | t + 18 | T + 19 | Y + 20 | y + 21 | F + 22 | f + 23 | x + 24 | 0 + 25 | 1 + 26 | +(26 rows) + +--Testcase 31: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 32: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN"; + QUERY PLAN +--------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN" + Output: i, b + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" +(3 rows) + +--Testcase 33: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN+"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" + Output: i, b, t, l + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 34: ERR - invalid text affinity because not ISO:SQL text input +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "text" affinity (1 bytes) : 'x' +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 35 +DELETE FROM "type_BOOLEAN" WHERE i = 23; +--Testcase 36: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 37: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; + i | b | t | l +----+---+------+--- + 26 | | null | +(1 row) + +--Testcase 38: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 +(24 rows) + +--Testcase 39: +SELECT * FROM "type_BOOLEAN+" WHERE b; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 3 | t | text | 4 + 5 | t | text | 4 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 25 | t | integer | 1 +(13 rows) + +--Testcase 40: +SELECT * FROM "type_BOOLEAN+" WHERE NOT b; + i | b | t | l +----+---+---------+--- + 2 | f | integer | 1 + 4 | f | text | 5 + 6 | f | text | 5 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 +(11 rows) + +--Testcase 41: +CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 42: +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +--Testcase 43: +INSERT INTO "type_BOOLEANpk" VALUES (FALSE); +--Testcase 44: ERR - primary key +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) +--Testcase 45: +DELETE FROM "type_BOOLEANpk"; +--Testcase 46: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; +--Testcase 47: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); +--Testcase 48: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 49: ERR - invalid float for bool column +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "real" affinity : 3.14159265358979 +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 50 +DELETE FROM "type_BOOLEAN" WHERE i = 27; +--Testcase 51: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 52: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE b; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 53: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 54: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE b; + QUERY PLAN +------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 55: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE NOT b; + QUERY PLAN +------------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 56: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" b + Output: i, b, t, l, (NOT b) + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 57: +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + i | b | t | l | nb +----+---+---------+---+---- + 1 | t | integer | 1 | f + 2 | f | integer | 1 | t + 3 | t | text | 4 | f + 4 | f | text | 5 | t + 5 | t | text | 4 | f + 6 | f | text | 5 | t + 7 | t | text | 3 | f + 8 | t | text | 3 | f + 9 | t | text | 3 | f + 10 | f | text | 2 | t + 11 | f | text | 2 | t + 12 | f | text | 2 | t + 13 | f | text | 3 | t + 14 | f | text | 3 | t + 15 | t | text | 2 | f + 16 | t | text | 2 | f + 17 | t | text | 1 | f + 18 | t | text | 1 | f + 19 | t | text | 1 | f + 20 | t | text | 1 | f + 21 | f | text | 1 | t + 22 | f | text | 1 | t + 24 | f | integer | 1 | t + 25 | t | integer | 1 | f + 26 | | null | | +(25 rows) + +--Testcase 58: +CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); +--Testcase 59: see INIT.SQL with mixed affinity boolean data +SELECT * FROM "type_BOOLEAN_oper"; + i | i1 | b1 | i2 | b2 +-----+----+----+----+---- + 1 | 1 | t | 1 | t + 2 | 1 | t | 2 | t + 3 | 1 | t | 3 | t + 4 | 1 | t | 4 | t + 5 | 1 | t | 5 | t + 6 | 1 | t | 6 | t + 7 | 1 | t | 7 | t + 8 | 1 | t | 8 | t + 9 | 1 | t | 9 | t + 10 | 1 | t | 10 | t + 11 | 1 | t | 11 | t + 12 | 1 | t | 12 | t + 13 | 1 | t | 13 | t + 14 | 1 | t | 14 | f + 15 | 1 | t | 15 | f + 16 | 1 | t | 16 | f + 17 | 1 | t | 17 | f + 18 | 1 | t | 18 | f + 19 | 1 | t | 19 | f + 20 | 1 | t | 20 | f + 21 | 1 | t | 21 | f + 22 | 1 | t | 22 | f + 23 | 1 | t | 23 | f + 24 | 1 | t | 24 | f + 25 | 1 | t | 25 | f + 26 | 1 | t | 26 | f + 27 | 1 | t | 27 | + 28 | 2 | t | 1 | t + 29 | 2 | t | 2 | t + 30 | 2 | t | 3 | t + 31 | 2 | t | 4 | t + 32 | 2 | t | 5 | t + 33 | 2 | t | 6 | t + 34 | 2 | t | 7 | t + 35 | 2 | t | 8 | t + 36 | 2 | t | 9 | t + 37 | 2 | t | 10 | t + 38 | 2 | t | 11 | t + 39 | 2 | t | 12 | t + 40 | 2 | t | 13 | t + 41 | 2 | t | 14 | f + 42 | 2 | t | 15 | f + 43 | 2 | t | 16 | f + 44 | 2 | t | 17 | f + 45 | 2 | t | 18 | f + 46 | 2 | t | 19 | f + 47 | 2 | t | 20 | f + 48 | 2 | t | 21 | f + 49 | 2 | t | 22 | f + 50 | 2 | t | 23 | f + 51 | 2 | t | 24 | f + 52 | 2 | t | 25 | f + 53 | 2 | t | 26 | f + 54 | 2 | t | 27 | + 55 | 3 | t | 1 | t + 56 | 3 | t | 2 | t + 57 | 3 | t | 3 | t + 58 | 3 | t | 4 | t + 59 | 3 | t | 5 | t + 60 | 3 | t | 6 | t + 61 | 3 | t | 7 | t + 62 | 3 | t | 8 | t + 63 | 3 | t | 9 | t + 64 | 3 | t | 10 | t + 65 | 3 | t | 11 | t + 66 | 3 | t | 12 | t + 67 | 3 | t | 13 | t + 68 | 3 | t | 14 | f + 69 | 3 | t | 15 | f + 70 | 3 | t | 16 | f + 71 | 3 | t | 17 | f + 72 | 3 | t | 18 | f + 73 | 3 | t | 19 | f + 74 | 3 | t | 20 | f + 75 | 3 | t | 21 | f + 76 | 3 | t | 22 | f + 77 | 3 | t | 23 | f + 78 | 3 | t | 24 | f + 79 | 3 | t | 25 | f + 80 | 3 | t | 26 | f + 81 | 3 | t | 27 | + 82 | 4 | t | 1 | t + 83 | 4 | t | 2 | t + 84 | 4 | t | 3 | t + 85 | 4 | t | 4 | t + 86 | 4 | t | 5 | t + 87 | 4 | t | 6 | t + 88 | 4 | t | 7 | t + 89 | 4 | t | 8 | t + 90 | 4 | t | 9 | t + 91 | 4 | t | 10 | t + 92 | 4 | t | 11 | t + 93 | 4 | t | 12 | t + 94 | 4 | t | 13 | t + 95 | 4 | t | 14 | f + 96 | 4 | t | 15 | f + 97 | 4 | t | 16 | f + 98 | 4 | t | 17 | f + 99 | 4 | t | 18 | f + 100 | 4 | t | 19 | f + 101 | 4 | t | 20 | f + 102 | 4 | t | 21 | f + 103 | 4 | t | 22 | f + 104 | 4 | t | 23 | f + 105 | 4 | t | 24 | f + 106 | 4 | t | 25 | f + 107 | 4 | t | 26 | f + 108 | 4 | t | 27 | + 109 | 5 | t | 1 | t + 110 | 5 | t | 2 | t + 111 | 5 | t | 3 | t + 112 | 5 | t | 4 | t + 113 | 5 | t | 5 | t + 114 | 5 | t | 6 | t + 115 | 5 | t | 7 | t + 116 | 5 | t | 8 | t + 117 | 5 | t | 9 | t + 118 | 5 | t | 10 | t + 119 | 5 | t | 11 | t + 120 | 5 | t | 12 | t + 121 | 5 | t | 13 | t + 122 | 5 | t | 14 | f + 123 | 5 | t | 15 | f + 124 | 5 | t | 16 | f + 125 | 5 | t | 17 | f + 126 | 5 | t | 18 | f + 127 | 5 | t | 19 | f + 128 | 5 | t | 20 | f + 129 | 5 | t | 21 | f + 130 | 5 | t | 22 | f + 131 | 5 | t | 23 | f + 132 | 5 | t | 24 | f + 133 | 5 | t | 25 | f + 134 | 5 | t | 26 | f + 135 | 5 | t | 27 | + 136 | 6 | t | 1 | t + 137 | 6 | t | 2 | t + 138 | 6 | t | 3 | t + 139 | 6 | t | 4 | t + 140 | 6 | t | 5 | t + 141 | 6 | t | 6 | t + 142 | 6 | t | 7 | t + 143 | 6 | t | 8 | t + 144 | 6 | t | 9 | t + 145 | 6 | t | 10 | t + 146 | 6 | t | 11 | t + 147 | 6 | t | 12 | t + 148 | 6 | t | 13 | t + 149 | 6 | t | 14 | f + 150 | 6 | t | 15 | f + 151 | 6 | t | 16 | f + 152 | 6 | t | 17 | f + 153 | 6 | t | 18 | f + 154 | 6 | t | 19 | f + 155 | 6 | t | 20 | f + 156 | 6 | t | 21 | f + 157 | 6 | t | 22 | f + 158 | 6 | t | 23 | f + 159 | 6 | t | 24 | f + 160 | 6 | t | 25 | f + 161 | 6 | t | 26 | f + 162 | 6 | t | 27 | + 163 | 7 | t | 1 | t + 164 | 7 | t | 2 | t + 165 | 7 | t | 3 | t + 166 | 7 | t | 4 | t + 167 | 7 | t | 5 | t + 168 | 7 | t | 6 | t + 169 | 7 | t | 7 | t + 170 | 7 | t | 8 | t + 171 | 7 | t | 9 | t + 172 | 7 | t | 10 | t + 173 | 7 | t | 11 | t + 174 | 7 | t | 12 | t + 175 | 7 | t | 13 | t + 176 | 7 | t | 14 | f + 177 | 7 | t | 15 | f + 178 | 7 | t | 16 | f + 179 | 7 | t | 17 | f + 180 | 7 | t | 18 | f + 181 | 7 | t | 19 | f + 182 | 7 | t | 20 | f + 183 | 7 | t | 21 | f + 184 | 7 | t | 22 | f + 185 | 7 | t | 23 | f + 186 | 7 | t | 24 | f + 187 | 7 | t | 25 | f + 188 | 7 | t | 26 | f + 189 | 7 | t | 27 | + 190 | 8 | t | 1 | t + 191 | 8 | t | 2 | t + 192 | 8 | t | 3 | t + 193 | 8 | t | 4 | t + 194 | 8 | t | 5 | t + 195 | 8 | t | 6 | t + 196 | 8 | t | 7 | t + 197 | 8 | t | 8 | t + 198 | 8 | t | 9 | t + 199 | 8 | t | 10 | t + 200 | 8 | t | 11 | t + 201 | 8 | t | 12 | t + 202 | 8 | t | 13 | t + 203 | 8 | t | 14 | f + 204 | 8 | t | 15 | f + 205 | 8 | t | 16 | f + 206 | 8 | t | 17 | f + 207 | 8 | t | 18 | f + 208 | 8 | t | 19 | f + 209 | 8 | t | 20 | f + 210 | 8 | t | 21 | f + 211 | 8 | t | 22 | f + 212 | 8 | t | 23 | f + 213 | 8 | t | 24 | f + 214 | 8 | t | 25 | f + 215 | 8 | t | 26 | f + 216 | 8 | t | 27 | + 217 | 9 | t | 1 | t + 218 | 9 | t | 2 | t + 219 | 9 | t | 3 | t + 220 | 9 | t | 4 | t + 221 | 9 | t | 5 | t + 222 | 9 | t | 6 | t + 223 | 9 | t | 7 | t + 224 | 9 | t | 8 | t + 225 | 9 | t | 9 | t + 226 | 9 | t | 10 | t + 227 | 9 | t | 11 | t + 228 | 9 | t | 12 | t + 229 | 9 | t | 13 | t + 230 | 9 | t | 14 | f + 231 | 9 | t | 15 | f + 232 | 9 | t | 16 | f + 233 | 9 | t | 17 | f + 234 | 9 | t | 18 | f + 235 | 9 | t | 19 | f + 236 | 9 | t | 20 | f + 237 | 9 | t | 21 | f + 238 | 9 | t | 22 | f + 239 | 9 | t | 23 | f + 240 | 9 | t | 24 | f + 241 | 9 | t | 25 | f + 242 | 9 | t | 26 | f + 243 | 9 | t | 27 | + 244 | 10 | t | 1 | t + 245 | 10 | t | 2 | t + 246 | 10 | t | 3 | t + 247 | 10 | t | 4 | t + 248 | 10 | t | 5 | t + 249 | 10 | t | 6 | t + 250 | 10 | t | 7 | t + 251 | 10 | t | 8 | t + 252 | 10 | t | 9 | t + 253 | 10 | t | 10 | t + 254 | 10 | t | 11 | t + 255 | 10 | t | 12 | t + 256 | 10 | t | 13 | t + 257 | 10 | t | 14 | f + 258 | 10 | t | 15 | f + 259 | 10 | t | 16 | f + 260 | 10 | t | 17 | f + 261 | 10 | t | 18 | f + 262 | 10 | t | 19 | f + 263 | 10 | t | 20 | f + 264 | 10 | t | 21 | f + 265 | 10 | t | 22 | f + 266 | 10 | t | 23 | f + 267 | 10 | t | 24 | f + 268 | 10 | t | 25 | f + 269 | 10 | t | 26 | f + 270 | 10 | t | 27 | + 271 | 11 | t | 1 | t + 272 | 11 | t | 2 | t + 273 | 11 | t | 3 | t + 274 | 11 | t | 4 | t + 275 | 11 | t | 5 | t + 276 | 11 | t | 6 | t + 277 | 11 | t | 7 | t + 278 | 11 | t | 8 | t + 279 | 11 | t | 9 | t + 280 | 11 | t | 10 | t + 281 | 11 | t | 11 | t + 282 | 11 | t | 12 | t + 283 | 11 | t | 13 | t + 284 | 11 | t | 14 | f + 285 | 11 | t | 15 | f + 286 | 11 | t | 16 | f + 287 | 11 | t | 17 | f + 288 | 11 | t | 18 | f + 289 | 11 | t | 19 | f + 290 | 11 | t | 20 | f + 291 | 11 | t | 21 | f + 292 | 11 | t | 22 | f + 293 | 11 | t | 23 | f + 294 | 11 | t | 24 | f + 295 | 11 | t | 25 | f + 296 | 11 | t | 26 | f + 297 | 11 | t | 27 | + 298 | 12 | t | 1 | t + 299 | 12 | t | 2 | t + 300 | 12 | t | 3 | t + 301 | 12 | t | 4 | t + 302 | 12 | t | 5 | t + 303 | 12 | t | 6 | t + 304 | 12 | t | 7 | t + 305 | 12 | t | 8 | t + 306 | 12 | t | 9 | t + 307 | 12 | t | 10 | t + 308 | 12 | t | 11 | t + 309 | 12 | t | 12 | t + 310 | 12 | t | 13 | t + 311 | 12 | t | 14 | f + 312 | 12 | t | 15 | f + 313 | 12 | t | 16 | f + 314 | 12 | t | 17 | f + 315 | 12 | t | 18 | f + 316 | 12 | t | 19 | f + 317 | 12 | t | 20 | f + 318 | 12 | t | 21 | f + 319 | 12 | t | 22 | f + 320 | 12 | t | 23 | f + 321 | 12 | t | 24 | f + 322 | 12 | t | 25 | f + 323 | 12 | t | 26 | f + 324 | 12 | t | 27 | + 325 | 13 | t | 1 | t + 326 | 13 | t | 2 | t + 327 | 13 | t | 3 | t + 328 | 13 | t | 4 | t + 329 | 13 | t | 5 | t + 330 | 13 | t | 6 | t + 331 | 13 | t | 7 | t + 332 | 13 | t | 8 | t + 333 | 13 | t | 9 | t + 334 | 13 | t | 10 | t + 335 | 13 | t | 11 | t + 336 | 13 | t | 12 | t + 337 | 13 | t | 13 | t + 338 | 13 | t | 14 | f + 339 | 13 | t | 15 | f + 340 | 13 | t | 16 | f + 341 | 13 | t | 17 | f + 342 | 13 | t | 18 | f + 343 | 13 | t | 19 | f + 344 | 13 | t | 20 | f + 345 | 13 | t | 21 | f + 346 | 13 | t | 22 | f + 347 | 13 | t | 23 | f + 348 | 13 | t | 24 | f + 349 | 13 | t | 25 | f + 350 | 13 | t | 26 | f + 351 | 13 | t | 27 | + 352 | 14 | f | 1 | t + 353 | 14 | f | 2 | t + 354 | 14 | f | 3 | t + 355 | 14 | f | 4 | t + 356 | 14 | f | 5 | t + 357 | 14 | f | 6 | t + 358 | 14 | f | 7 | t + 359 | 14 | f | 8 | t + 360 | 14 | f | 9 | t + 361 | 14 | f | 10 | t + 362 | 14 | f | 11 | t + 363 | 14 | f | 12 | t + 364 | 14 | f | 13 | t + 365 | 14 | f | 14 | f + 366 | 14 | f | 15 | f + 367 | 14 | f | 16 | f + 368 | 14 | f | 17 | f + 369 | 14 | f | 18 | f + 370 | 14 | f | 19 | f + 371 | 14 | f | 20 | f + 372 | 14 | f | 21 | f + 373 | 14 | f | 22 | f + 374 | 14 | f | 23 | f + 375 | 14 | f | 24 | f + 376 | 14 | f | 25 | f + 377 | 14 | f | 26 | f + 378 | 14 | f | 27 | + 379 | 15 | f | 1 | t + 380 | 15 | f | 2 | t + 381 | 15 | f | 3 | t + 382 | 15 | f | 4 | t + 383 | 15 | f | 5 | t + 384 | 15 | f | 6 | t + 385 | 15 | f | 7 | t + 386 | 15 | f | 8 | t + 387 | 15 | f | 9 | t + 388 | 15 | f | 10 | t + 389 | 15 | f | 11 | t + 390 | 15 | f | 12 | t + 391 | 15 | f | 13 | t + 392 | 15 | f | 14 | f + 393 | 15 | f | 15 | f + 394 | 15 | f | 16 | f + 395 | 15 | f | 17 | f + 396 | 15 | f | 18 | f + 397 | 15 | f | 19 | f + 398 | 15 | f | 20 | f + 399 | 15 | f | 21 | f + 400 | 15 | f | 22 | f + 401 | 15 | f | 23 | f + 402 | 15 | f | 24 | f + 403 | 15 | f | 25 | f + 404 | 15 | f | 26 | f + 405 | 15 | f | 27 | + 406 | 16 | f | 1 | t + 407 | 16 | f | 2 | t + 408 | 16 | f | 3 | t + 409 | 16 | f | 4 | t + 410 | 16 | f | 5 | t + 411 | 16 | f | 6 | t + 412 | 16 | f | 7 | t + 413 | 16 | f | 8 | t + 414 | 16 | f | 9 | t + 415 | 16 | f | 10 | t + 416 | 16 | f | 11 | t + 417 | 16 | f | 12 | t + 418 | 16 | f | 13 | t + 419 | 16 | f | 14 | f + 420 | 16 | f | 15 | f + 421 | 16 | f | 16 | f + 422 | 16 | f | 17 | f + 423 | 16 | f | 18 | f + 424 | 16 | f | 19 | f + 425 | 16 | f | 20 | f + 426 | 16 | f | 21 | f + 427 | 16 | f | 22 | f + 428 | 16 | f | 23 | f + 429 | 16 | f | 24 | f + 430 | 16 | f | 25 | f + 431 | 16 | f | 26 | f + 432 | 16 | f | 27 | + 433 | 17 | f | 1 | t + 434 | 17 | f | 2 | t + 435 | 17 | f | 3 | t + 436 | 17 | f | 4 | t + 437 | 17 | f | 5 | t + 438 | 17 | f | 6 | t + 439 | 17 | f | 7 | t + 440 | 17 | f | 8 | t + 441 | 17 | f | 9 | t + 442 | 17 | f | 10 | t + 443 | 17 | f | 11 | t + 444 | 17 | f | 12 | t + 445 | 17 | f | 13 | t + 446 | 17 | f | 14 | f + 447 | 17 | f | 15 | f + 448 | 17 | f | 16 | f + 449 | 17 | f | 17 | f + 450 | 17 | f | 18 | f + 451 | 17 | f | 19 | f + 452 | 17 | f | 20 | f + 453 | 17 | f | 21 | f + 454 | 17 | f | 22 | f + 455 | 17 | f | 23 | f + 456 | 17 | f | 24 | f + 457 | 17 | f | 25 | f + 458 | 17 | f | 26 | f + 459 | 17 | f | 27 | + 460 | 18 | f | 1 | t + 461 | 18 | f | 2 | t + 462 | 18 | f | 3 | t + 463 | 18 | f | 4 | t + 464 | 18 | f | 5 | t + 465 | 18 | f | 6 | t + 466 | 18 | f | 7 | t + 467 | 18 | f | 8 | t + 468 | 18 | f | 9 | t + 469 | 18 | f | 10 | t + 470 | 18 | f | 11 | t + 471 | 18 | f | 12 | t + 472 | 18 | f | 13 | t + 473 | 18 | f | 14 | f + 474 | 18 | f | 15 | f + 475 | 18 | f | 16 | f + 476 | 18 | f | 17 | f + 477 | 18 | f | 18 | f + 478 | 18 | f | 19 | f + 479 | 18 | f | 20 | f + 480 | 18 | f | 21 | f + 481 | 18 | f | 22 | f + 482 | 18 | f | 23 | f + 483 | 18 | f | 24 | f + 484 | 18 | f | 25 | f + 485 | 18 | f | 26 | f + 486 | 18 | f | 27 | + 487 | 19 | f | 1 | t + 488 | 19 | f | 2 | t + 489 | 19 | f | 3 | t + 490 | 19 | f | 4 | t + 491 | 19 | f | 5 | t + 492 | 19 | f | 6 | t + 493 | 19 | f | 7 | t + 494 | 19 | f | 8 | t + 495 | 19 | f | 9 | t + 496 | 19 | f | 10 | t + 497 | 19 | f | 11 | t + 498 | 19 | f | 12 | t + 499 | 19 | f | 13 | t + 500 | 19 | f | 14 | f + 501 | 19 | f | 15 | f + 502 | 19 | f | 16 | f + 503 | 19 | f | 17 | f + 504 | 19 | f | 18 | f + 505 | 19 | f | 19 | f + 506 | 19 | f | 20 | f + 507 | 19 | f | 21 | f + 508 | 19 | f | 22 | f + 509 | 19 | f | 23 | f + 510 | 19 | f | 24 | f + 511 | 19 | f | 25 | f + 512 | 19 | f | 26 | f + 513 | 19 | f | 27 | + 514 | 20 | f | 1 | t + 515 | 20 | f | 2 | t + 516 | 20 | f | 3 | t + 517 | 20 | f | 4 | t + 518 | 20 | f | 5 | t + 519 | 20 | f | 6 | t + 520 | 20 | f | 7 | t + 521 | 20 | f | 8 | t + 522 | 20 | f | 9 | t + 523 | 20 | f | 10 | t + 524 | 20 | f | 11 | t + 525 | 20 | f | 12 | t + 526 | 20 | f | 13 | t + 527 | 20 | f | 14 | f + 528 | 20 | f | 15 | f + 529 | 20 | f | 16 | f + 530 | 20 | f | 17 | f + 531 | 20 | f | 18 | f + 532 | 20 | f | 19 | f + 533 | 20 | f | 20 | f + 534 | 20 | f | 21 | f + 535 | 20 | f | 22 | f + 536 | 20 | f | 23 | f + 537 | 20 | f | 24 | f + 538 | 20 | f | 25 | f + 539 | 20 | f | 26 | f + 540 | 20 | f | 27 | + 541 | 21 | f | 1 | t + 542 | 21 | f | 2 | t + 543 | 21 | f | 3 | t + 544 | 21 | f | 4 | t + 545 | 21 | f | 5 | t + 546 | 21 | f | 6 | t + 547 | 21 | f | 7 | t + 548 | 21 | f | 8 | t + 549 | 21 | f | 9 | t + 550 | 21 | f | 10 | t + 551 | 21 | f | 11 | t + 552 | 21 | f | 12 | t + 553 | 21 | f | 13 | t + 554 | 21 | f | 14 | f + 555 | 21 | f | 15 | f + 556 | 21 | f | 16 | f + 557 | 21 | f | 17 | f + 558 | 21 | f | 18 | f + 559 | 21 | f | 19 | f + 560 | 21 | f | 20 | f + 561 | 21 | f | 21 | f + 562 | 21 | f | 22 | f + 563 | 21 | f | 23 | f + 564 | 21 | f | 24 | f + 565 | 21 | f | 25 | f + 566 | 21 | f | 26 | f + 567 | 21 | f | 27 | + 568 | 22 | f | 1 | t + 569 | 22 | f | 2 | t + 570 | 22 | f | 3 | t + 571 | 22 | f | 4 | t + 572 | 22 | f | 5 | t + 573 | 22 | f | 6 | t + 574 | 22 | f | 7 | t + 575 | 22 | f | 8 | t + 576 | 22 | f | 9 | t + 577 | 22 | f | 10 | t + 578 | 22 | f | 11 | t + 579 | 22 | f | 12 | t + 580 | 22 | f | 13 | t + 581 | 22 | f | 14 | f + 582 | 22 | f | 15 | f + 583 | 22 | f | 16 | f + 584 | 22 | f | 17 | f + 585 | 22 | f | 18 | f + 586 | 22 | f | 19 | f + 587 | 22 | f | 20 | f + 588 | 22 | f | 21 | f + 589 | 22 | f | 22 | f + 590 | 22 | f | 23 | f + 591 | 22 | f | 24 | f + 592 | 22 | f | 25 | f + 593 | 22 | f | 26 | f + 594 | 22 | f | 27 | + 595 | 23 | f | 1 | t + 596 | 23 | f | 2 | t + 597 | 23 | f | 3 | t + 598 | 23 | f | 4 | t + 599 | 23 | f | 5 | t + 600 | 23 | f | 6 | t + 601 | 23 | f | 7 | t + 602 | 23 | f | 8 | t + 603 | 23 | f | 9 | t + 604 | 23 | f | 10 | t + 605 | 23 | f | 11 | t + 606 | 23 | f | 12 | t + 607 | 23 | f | 13 | t + 608 | 23 | f | 14 | f + 609 | 23 | f | 15 | f + 610 | 23 | f | 16 | f + 611 | 23 | f | 17 | f + 612 | 23 | f | 18 | f + 613 | 23 | f | 19 | f + 614 | 23 | f | 20 | f + 615 | 23 | f | 21 | f + 616 | 23 | f | 22 | f + 617 | 23 | f | 23 | f + 618 | 23 | f | 24 | f + 619 | 23 | f | 25 | f + 620 | 23 | f | 26 | f + 621 | 23 | f | 27 | + 622 | 24 | f | 1 | t + 623 | 24 | f | 2 | t + 624 | 24 | f | 3 | t + 625 | 24 | f | 4 | t + 626 | 24 | f | 5 | t + 627 | 24 | f | 6 | t + 628 | 24 | f | 7 | t + 629 | 24 | f | 8 | t + 630 | 24 | f | 9 | t + 631 | 24 | f | 10 | t + 632 | 24 | f | 11 | t + 633 | 24 | f | 12 | t + 634 | 24 | f | 13 | t + 635 | 24 | f | 14 | f + 636 | 24 | f | 15 | f + 637 | 24 | f | 16 | f + 638 | 24 | f | 17 | f + 639 | 24 | f | 18 | f + 640 | 24 | f | 19 | f + 641 | 24 | f | 20 | f + 642 | 24 | f | 21 | f + 643 | 24 | f | 22 | f + 644 | 24 | f | 23 | f + 645 | 24 | f | 24 | f + 646 | 24 | f | 25 | f + 647 | 24 | f | 26 | f + 648 | 24 | f | 27 | + 649 | 25 | f | 1 | t + 650 | 25 | f | 2 | t + 651 | 25 | f | 3 | t + 652 | 25 | f | 4 | t + 653 | 25 | f | 5 | t + 654 | 25 | f | 6 | t + 655 | 25 | f | 7 | t + 656 | 25 | f | 8 | t + 657 | 25 | f | 9 | t + 658 | 25 | f | 10 | t + 659 | 25 | f | 11 | t + 660 | 25 | f | 12 | t + 661 | 25 | f | 13 | t + 662 | 25 | f | 14 | f + 663 | 25 | f | 15 | f + 664 | 25 | f | 16 | f + 665 | 25 | f | 17 | f + 666 | 25 | f | 18 | f + 667 | 25 | f | 19 | f + 668 | 25 | f | 20 | f + 669 | 25 | f | 21 | f + 670 | 25 | f | 22 | f + 671 | 25 | f | 23 | f + 672 | 25 | f | 24 | f + 673 | 25 | f | 25 | f + 674 | 25 | f | 26 | f + 675 | 25 | f | 27 | + 676 | 26 | f | 1 | t + 677 | 26 | f | 2 | t + 678 | 26 | f | 3 | t + 679 | 26 | f | 4 | t + 680 | 26 | f | 5 | t + 681 | 26 | f | 6 | t + 682 | 26 | f | 7 | t + 683 | 26 | f | 8 | t + 684 | 26 | f | 9 | t + 685 | 26 | f | 10 | t + 686 | 26 | f | 11 | t + 687 | 26 | f | 12 | t + 688 | 26 | f | 13 | t + 689 | 26 | f | 14 | f + 690 | 26 | f | 15 | f + 691 | 26 | f | 16 | f + 692 | 26 | f | 17 | f + 693 | 26 | f | 18 | f + 694 | 26 | f | 19 | f + 695 | 26 | f | 20 | f + 696 | 26 | f | 21 | f + 697 | 26 | f | 22 | f + 698 | 26 | f | 23 | f + 699 | 26 | f | 24 | f + 700 | 26 | f | 25 | f + 701 | 26 | f | 26 | f + 702 | 26 | f | 27 | + 703 | 27 | | 1 | t + 704 | 27 | | 2 | t + 705 | 27 | | 3 | t + 706 | 27 | | 4 | t + 707 | 27 | | 5 | t + 708 | 27 | | 6 | t + 709 | 27 | | 7 | t + 710 | 27 | | 8 | t + 711 | 27 | | 9 | t + 712 | 27 | | 10 | t + 713 | 27 | | 11 | t + 714 | 27 | | 12 | t + 715 | 27 | | 13 | t + 716 | 27 | | 14 | f + 717 | 27 | | 15 | f + 718 | 27 | | 16 | f + 719 | 27 | | 17 | f + 720 | 27 | | 18 | f + 721 | 27 | | 19 | f + 722 | 27 | | 20 | f + 723 | 27 | | 21 | f + 724 | 27 | | 22 | f + 725 | 27 | | 23 | f + 726 | 27 | | 24 | f + 727 | 27 | | 25 | f + 728 | 27 | | 26 | f + 729 | 27 | | 27 | +(729 rows) + +--Testcase 60: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 61: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + b1 | b2 | a | o +----+----+---+--- + f | f | f | f + f | t | f | t + f | | f | + t | f | f | t + t | t | t | t + t | | | t + | f | f | + | t | | t + | | | +(9 rows) + +--Testcase 62: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 63: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + b1 | b2 | a | o +----+----+---+--- + t | t | t | t +(1 row) + +--Testcase 64: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 65: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + b1 | b2 | a | o +----+----+---+--- + f | t | f | t + t | f | f | t + t | t | t | t + t | | | t + | t | | t +(5 rows) + +--Testcase 66: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) +(3 rows) + +--Testcase 67: +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; +--Testcase 68: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + t | f + t | t + t | + | f + | t + | +(6 rows) + +--Testcase 69: +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; +--Testcase 70: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) +(3 rows) + +--Testcase 71: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | t + f | + | f + | +(5 rows) + +--Testcase 72: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Delete on public."type_BOOLEAN_oper" + -> Foreign Delete on public."type_BOOLEAN_oper" + SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) +(3 rows) + +--Testcase 73: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; +--Testcase 74: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | + | f + | +(4 rows) + +--Testcase 75: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; +--Testcase 76: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 77: +DELETE FROM "type_BOOLEAN_oper" WHERE b2; +--Testcase 78: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 79: +DELETE FROM "type_BOOLEAN"; +--Testcase 003: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BOOLEAN" +drop cascades to foreign table "type_BOOLEAN+" +drop cascades to foreign table "type_BOOLEANpk" +drop cascades to foreign table "type_BOOLEAN_oper" diff --git a/expected/14.12/types/macaddr.out b/expected/14.12/types/macaddr.out new file mode 100644 index 00000000..c87381b4 --- /dev/null +++ b/expected/14.12/types/macaddr.out @@ -0,0 +1,954 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); +--Testcase 012: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); +--Testcase 013: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); +--Testcase 014: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); +--Testcase 015: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); +--Testcase 016: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); +--Testcase 017: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); +--Testcase 018: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); +--Testcase 019: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); +--Testcase 020: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); +--Testcase 021: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); +--Testcase 022: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); +--Testcase 023: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); +--Testcase 024: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; +--Testcase 029: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); +--Testcase 030: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); +--Testcase 031: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); +--Testcase 032: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); +--Testcase 033: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); +--Testcase 034: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); +--Testcase 035: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); +--Testcase 036: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); +--Testcase 037: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); +--Testcase 038: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); +--Testcase 039: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); +--Testcase 040: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); +--Testcase 041: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); +--Testcase 042: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); +--Testcase 046: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); +--Testcase 047: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); +--Testcase 048: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); +--Testcase 049: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); +--Testcase 050: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); +--Testcase 051: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); +--Testcase 052: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); +--Testcase 053: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); +--Testcase 054: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); +--Testcase 055: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); +--Testcase 056: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); +--Testcase 057: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); +--Testcase 058: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); +--Testcase 062: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); +--Testcase 063: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); +--Testcase 064: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); +--Testcase 065: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); +--Testcase 066: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); +--Testcase 067: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); +--Testcase 068: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); +--Testcase 069: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); +--Testcase 070: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); +--Testcase 071: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); +--Testcase 072: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); +--Testcase 073: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); +--Testcase 074: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); +--Testcase 077: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); +--Testcase 108: +SELECT * FROM "type_MACADDR+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------+------+----+------------------- + 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; + i | m +----+------------------- + 63 | 00:00:00:00:00:01 + 64 | 00:00:00:00:00:02 + 65 | 00:00:00:00:00:03 + 66 | 00:00:01:00:00:00 + 67 | 00:00:02:00:00:00 + 68 | 00:00:03:00:00:00 + 60 | 01:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 62 | 03:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; + i | m +----+------------------- + 62 | 03:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 60 | 01:00:00:00:00:00 + 68 | 00:00:03:00:00:00 + 67 | 00:00:02:00:00:00 + 66 | 00:00:01:00:00:00 + 65 | 00:00:00:00:00:03 + 64 | 00:00:00:00:00:02 + 63 | 00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDRpk"; + col +------------------- + 01:02:03:04:05:06 + 01:02:03:04:05:06 + 01:02:03:04:05:06 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDRpk"; +--no macaddr operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m | '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m & '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m > '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m < '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m = '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m >= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <> '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR" +drop cascades to foreign table "type_MACADDR+" +drop cascades to foreign table "type_MACADDRpk" diff --git a/expected/14.12/types/macaddr8.out b/expected/14.12/types/macaddr8.out new file mode 100644 index 00000000..4d9ea111 --- /dev/null +++ b/expected/14.12/types/macaddr8.out @@ -0,0 +1,955 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); +--Testcase 012: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); +--Testcase 013: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); +--Testcase 014: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); +--Testcase 015: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); +--Testcase 016: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); +--Testcase 017: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); +--Testcase 018: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); +--Testcase 019: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); +--Testcase 020: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); +--Testcase 021: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); +--Testcase 022: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); +--Testcase 023: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); +--Testcase 024: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; +--Testcase 029: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); +--Testcase 030: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); +--Testcase 031: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); +--Testcase 032: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); +--Testcase 033: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); +--Testcase 034: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); +--Testcase 035: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); +--Testcase 036: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); +--Testcase 037: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); +--Testcase 038: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); +--Testcase 039: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); +--Testcase 040: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); +--Testcase 041: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); +--Testcase 042: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); +--Testcase 046: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); +--Testcase 047: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); +--Testcase 048: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); +--Testcase 049: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); +--Testcase 050: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); +--Testcase 051: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); +--Testcase 052: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); +--Testcase 053: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); +--Testcase 054: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); +--Testcase 055: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); +--Testcase 056: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); +--Testcase 057: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); +--Testcase 058: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); +--Testcase 062: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); +--Testcase 063: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); +--Testcase 064: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); +--Testcase 065: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); +--Testcase 066: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); +--Testcase 067: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); +--Testcase 068: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); +--Testcase 069: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); +--Testcase 070: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); +--Testcase 071: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); +--Testcase 072: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); +--Testcase 073: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); +--Testcase 074: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); +--Testcase 077: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); +--Testcase 108: +SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------------+------+----+------------------------- + 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR8"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; + i | m +----+------------------------- + 63 | 00:00:00:00:00:00:00:01 + 64 | 00:00:00:00:00:00:00:02 + 65 | 00:00:00:00:00:00:00:03 + 66 | 00:00:00:00:01:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 62 | 03:00:00:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; + i | m +----+------------------------- + 62 | 03:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 66 | 00:00:00:00:01:00:00:00 + 65 | 00:00:00:00:00:00:00:03 + 64 | 00:00:00:00:00:00:00:02 + 63 | 00:00:00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +ERROR: option "column_type" provided more than once +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDR8pk"; + col +------------------------- + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDR8pk"; +--no macaddr8 operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR8" +drop cascades to foreign table "type_MACADDR8+" +drop cascades to foreign table "type_MACADDR8pk" diff --git a/expected/14.12/types/uuid.out b/expected/14.12/types/uuid.out new file mode 100644 index 00000000..2ccbb635 --- /dev/null +++ b/expected/14.12/types/uuid.out @@ -0,0 +1,548 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); +--Testcase 010: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; +--Testcase 011: +INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 012: +INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 013: +INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 014: +INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 015: +INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 016: +INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 017: +INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 018: +INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 019: +INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 020: +INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 021: +INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 022: +INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 023: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 024: +INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 025: +INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 026: +INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 027: +INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 029: +INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 030: +INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 031: +INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 032: +INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 033: +INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 034: +INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 035: +INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 036: +INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 037: +INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 038: +INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 039: +INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 040: +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 041: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 042: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); +--Testcase 043: +INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 044: +INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 045: +INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 046: +INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 047: +INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 048: +INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 049: +INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 050: +INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 051: +INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 052: +INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 053: +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 054: +INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 056: +CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); +--Testcase 057: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(40 rows) + +--Testcase 058: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 059: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 060: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 061: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 062: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 063: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 064: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 065: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 066: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 067: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; +--Testcase 068: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) +(3 rows) + +--Testcase 069: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) +(3 rows) + +--Testcase 071: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 072: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; +--Testcase 073: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) +(3 rows) + +--Testcase 074: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(21 rows) + +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; +--Testcase 076: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 +(1 row) + +--Testcase 077: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 077: +SELECT * FROM "type_UUID+"; + i | u | t | l +---+---+---+--- +(0 rows) + +--Testcase 078: +INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); +--Testcase 079: +SELECT * FROM "type_UUID+" WHERE "i" = 41; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 +(1 row) + +--Testcase 080: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; +--Testcase 081: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 082: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 083: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) +(3 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 086: +INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); +--Testcase 087: +INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); +--Testcase 088: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 089: +SELECT * FROM "type_UUID+" WHERE "i" = 42; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 090: +SELECT * FROM "type_UUID+" WHERE "i" = 43; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 091: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); + QUERY PLAN +---------------------------------------------------------------------------- + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) +(3 rows) + +--Testcase 092: +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); +--Testcase 093: +INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); +--Testcase 094: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 + 44 | | null | +(2 rows) + +--Testcase 095: +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + i | u | t | l +----+---+------+--- + 44 | | null | +(1 row) + +--Testcase 096: +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) +(3 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) +(3 rows) + +--Testcase 100: +CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 101: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); +--Testcase 102: +INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 103: +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 104: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(2 rows) + +--Testcase 105: ERR - primary key +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) +--Testcase 106: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 107: NO ERR, but the same semantics! +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 108: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(3 rows) + +--Testcase 109: +DELETE FROM "type_UUIDpk"; +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_UUID" +drop cascades to foreign table "type_UUID+" +drop cascades to foreign table "type_UUIDpk" diff --git a/expected/15.7/gis_no/auto_import.out b/expected/14.12/with_gis_support/auto_import.out similarity index 99% rename from expected/15.7/gis_no/auto_import.out rename to expected/14.12/with_gis_support/auto_import.out index c293b864..4c399770 100644 --- a/expected/15.7/gis_no/auto_import.out +++ b/expected/14.12/with_gis_support/auto_import.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 02: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 05: diff --git a/expected/14.12/types/postgis.out b/expected/14.12/with_gis_support/postgis.out similarity index 99% rename from expected/14.12/types/postgis.out rename to expected/14.12/with_gis_support/postgis.out index 6fa60f26..6ce3d2b7 100644 --- a/expected/14.12/types/postgis.out +++ b/expected/14.12/with_gis_support/postgis.out @@ -4,7 +4,8 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; +NOTICE: extension "postgis" already exists, skipping --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/expected/15.7/gis_no/type.out b/expected/14.12/with_gis_support/type.out similarity index 98% rename from expected/15.7/gis_no/type.out rename to expected/14.12/with_gis_support/type.out index a5f43f4d..ab47b70c 100644 --- a/expected/15.7/gis_no/type.out +++ b/expected/14.12/with_gis_support/type.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 45: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -495,7 +493,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +512,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf diff --git a/expected/16.3/gis_no/auto_import.out b/expected/14.12/without_gis_support/auto_import.out similarity index 99% rename from expected/16.3/gis_no/auto_import.out rename to expected/14.12/without_gis_support/auto_import.out index c293b864..4c399770 100644 --- a/expected/16.3/gis_no/auto_import.out +++ b/expected/14.12/without_gis_support/auto_import.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 02: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 05: diff --git a/expected/14.12/types/nogis.out b/expected/14.12/without_gis_support/nogis.out similarity index 100% rename from expected/14.12/types/nogis.out rename to expected/14.12/without_gis_support/nogis.out diff --git a/expected/16.3/gis_no/type.out b/expected/14.12/without_gis_support/type.out similarity index 98% rename from expected/16.3/gis_no/type.out rename to expected/14.12/without_gis_support/type.out index a5f43f4d..ab47b70c 100644 --- a/expected/16.3/gis_no/type.out +++ b/expected/14.12/without_gis_support/type.out @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 45: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); @@ -495,7 +493,7 @@ INSERT INTO "type_DOUBLE" VALUES (PI()); --Testcase 109: ERR primary key INSERT INTO "type_DOUBLE" VALUES (PI()); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 110: INSERT INTO "type_DOUBLE" VALUES ('Infinity'); @@ -514,12 +512,12 @@ SELECT * FROM "type_DOUBLE"; -- OK, +- Inf --Testcase 114: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 115: ERR primary key INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) --Testcase 116: SELECT * FROM "type_DOUBLE"; -- OK, +- Inf diff --git a/expected/15.7/extra/insert.out b/expected/15.7/extra/insert.out index c11ca213..ce96957d 100644 --- a/expected/15.7/extra/insert.out +++ b/expected/15.7/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite primary result code 19, extended result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/15.7/extra/sqlite_fdw_post.out b/expected/15.7/extra/sqlite_fdw_post.out index e1cb3eb9..0ff7db12 100644 --- a/expected/15.7/extra/sqlite_fdw_post.out +++ b/expected/15.7/extra/sqlite_fdw_post.out @@ -6858,7 +6858,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6869,12 +6869,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -7280,12 +7280,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/15.7/gis_ok/auto_import.out b/expected/15.7/gis_ok/auto_import.out deleted file mode 100644 index ec81e744..00000000 --- a/expected/15.7/gis_ok/auto_import.out +++ /dev/null @@ -1,638 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n ------------------------+----------------------+--------------------+------------------------+---------------------+---- - contrib_regression | public | department | contrib_regression | sqlite_svr | 1 - contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 - contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 - contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 - contrib_regression | public | t | contrib_regression | sqlite_svr | 5 - contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 - contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 - contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 - contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 - contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 - contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 - contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 - contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 - contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 - contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 - contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 - contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 - contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 - contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 - contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 - contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 - contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 - contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 - contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 - contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 - contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 - contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 - contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 - contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 - contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 - contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 - contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 - contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 - contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 - contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 - contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 - contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 - contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 - contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 - contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 - contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 - contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 - contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 - contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 - contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 - contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 - contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 - contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 - contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 - contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 - contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 - contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 - contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 - contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 - contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 -(55 rows) - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; - n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name -----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- - 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 - 1 | department | department_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric - 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 - 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar - 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 - 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 - 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 - 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 - 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | b | 2 | | YES | text | pg_catalog | text - 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 - 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 - 9 | limittest | y | 3 | | YES | text | pg_catalog | text - 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 - 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text - 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar - 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text - 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool - 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 - 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool - 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar - 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 - 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 - 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 - 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 - 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 - 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp - 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp - 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea - 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date - 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time - 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 - 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit - 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 - 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit - 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid - 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 - 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid - 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr - 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 - 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr - 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 - 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 - 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 - 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography - 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric - 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography - 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json - 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar - 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text - 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json - 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text - 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar - 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text - 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text - 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 - 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit - 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit - 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea - 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 - 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar - 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar - 39 | typetest | t | 4 | | YES | text | pg_catalog | text - 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp - 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp - 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text - 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar - 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text - 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text - 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text - 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text - 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text - 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea - 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date - 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text - 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar - 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 - 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json - 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 - 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 - 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar - 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 - 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea - 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea - 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 - 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea - 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 - 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea - 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 - 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea - 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea - 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea - 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 - 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text - 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 - 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 - 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text - 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text - 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry - 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar - 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text - 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb - 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 - 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date - 55 | ♂ | class | 6 | | YES | text | pg_catalog | text - 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar -(159 rows) - ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; - n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp -----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- - 1 | department | department_id | 1 | | | 64 | 2 | 0 | - 1 | department | department_name | 2 | | 1073741824 | | | | - 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | - 2 | employee | emp_name | 2 | | 1073741824 | | | | - 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | - 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | - 3 | empdata | emp_dat | 2 | | | | 10 | | - 4 | numbers | a | 1 | | | 64 | 2 | 0 | - 4 | numbers | b | 2 | 255 | 1020 | | | | - 5 | t | a | 1 | | | 64 | 2 | 0 | - 5 | t | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | - 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | - 7 | columntest | a a | 1 | | | 64 | 2 | 0 | - 7 | columntest | b b | 2 | | | 64 | 2 | 0 | - 7 | columntest | c c | 3 | | | 64 | 2 | 0 | - 8 | noprimary | a | 1 | | | 64 | 2 | 0 | - 8 | noprimary | b | 2 | | 1073741824 | | | | - 9 | limittest | id | 1 | | | 64 | 2 | 0 | - 9 | limittest | x | 2 | | | 64 | 2 | 0 | - 9 | limittest | y | 3 | | 1073741824 | | | | - 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | - 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c3 | 2 | | 1073741824 | | | | - 12 | case_exp | c6 | 3 | 10 | 40 | | | | - 13 | type_STRING | col | 1 | | 1073741824 | | | | - 14 | type_BOOLEANpk | col | 1 | | | | | | - 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | - 15 | type_BOOLEAN | b | 2 | | | | | | - 16 | type_BYTE | col | 1 | 1 | 4 | | | | - 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | - 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | - 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | - 20 | type_FLOAT | col | 1 | | | 53 | 2 | | - 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | - 22 | type_TIMESTAMP | col | 1 | | | | | | 6 - 22 | type_TIMESTAMP | b | 2 | | | | | | 6 - 23 | type_BLOB | col | 1 | | | | | | - 24 | type_DATE | col | 1 | | | | | | 0 - 25 | type_TIME | col | 1 | | | | | | 6 - 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | - 26 | type_BIT | b | 2 | 1 | | | | | - 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | - 27 | type_VARBIT | b | 2 | 1 | | | | | - 28 | type_UUIDpk | col | 1 | | | | | | - 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | - 29 | type_UUID | u | 2 | | | | | | - 30 | type_MACADDRpk | col | 1 | | | | | | - 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | - 31 | type_MACADDR | m | 2 | | | | | | - 32 | type_MACADDR8pk | col | 1 | | | | | | - 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | - 33 | type_MACADDR8 | m | 2 | | | | | | - 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | - 34 | types_PostGIS | gm | 2 | | | | | | - 34 | types_PostGIS | gg | 3 | | | | | | - 34 | types_PostGIS | r | 4 | | | | 10 | | - 34 | types_PostGIS | t | 5 | | 1073741824 | | | | - 34 | types_PostGIS | gm1 | 6 | | | | | | - 34 | types_PostGIS | gg1 | 7 | | | | | | - 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | - 35 | type_JSON | j | 2 | | | | | | - 35 | type_JSON | ot | 3 | 8 | 32 | | | | - 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | - 35 | type_JSON | q | 5 | | 1073741824 | | | | - 35 | type_JSON | j1 | 6 | | | | | | - 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | - 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | - 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | - 36 | type_JSONB | j | 2 | | | | | | - 36 | type_JSONB | ot | 3 | 8 | 32 | | | | - 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | - 36 | type_JSONB | q | 5 | | 1073741824 | | | | - 36 | type_JSONB | j1 | 6 | | | | | | - 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | - 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | - 37 | BitT | p | 1 | | | 64 | 2 | 0 | - 37 | BitT | a | 2 | 3 | | | | | - 37 | BitT | b | 3 | 5 | | | | | - 38 | notype | a | 1 | | | | | | - 39 | typetest | i | 1 | | | 64 | 2 | 0 | - 39 | typetest | v | 2 | 10 | 40 | | | | - 39 | typetest | c | 3 | 10 | 40 | | | | - 39 | typetest | t | 4 | | 1073741824 | | | | - 39 | typetest | d | 5 | | | | | | 6 - 39 | typetest | ti | 6 | | | | | | 6 - 40 | type_TEXT | col | 1 | | 1073741824 | | | | - 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | - 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | - 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | - 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | - 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | - 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | - 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | - 41 | alltypetest | c8 | 8 | 10 | 40 | | | | - 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | - 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | - 41 | alltypetest | c11 | 11 | | 1073741824 | | | | - 41 | alltypetest | c12 | 12 | | 1073741824 | | | | - 41 | alltypetest | c13 | 13 | | 1073741824 | | | | - 41 | alltypetest | c14 | 14 | | 1073741824 | | | | - 41 | alltypetest | c15 | 15 | | 1073741824 | | | | - 41 | alltypetest | c16 | 16 | | | | | | - 41 | alltypetest | c17 | 17 | | | 53 | 2 | | - 41 | alltypetest | c18 | 18 | | | 53 | 2 | | - 41 | alltypetest | c19 | 19 | | | 53 | 2 | | - 41 | alltypetest | c20 | 20 | | | 53 | 2 | | - 41 | alltypetest | c21 | 21 | | | | 10 | | - 41 | alltypetest | c22 | 22 | | | | 10 | | - 41 | alltypetest | c23 | 23 | | | | | | 0 - 41 | alltypetest | c24 | 24 | | | | | | 6 - 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | - 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | - 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | - 42 | json_osm_test | tags | 4 | | | | | | - 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | - 43 | shorty | id | 1 | | | 64 | 2 | 0 | - 43 | shorty | c | 2 | 10 | 40 | | | | - 44 | A a | col | 1 | | | 64 | 2 | 0 | - 45 | fts_table | name | 1 | | | | | | - 45 | fts_table | description | 2 | | | | | | - 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | - 46 | fts_table_data | block | 2 | | | | | | - 47 | fts_table_idx | segid | 1 | | | | | | - 47 | fts_table_idx | term | 2 | | | | | | - 47 | fts_table_idx | pgno | 3 | | | | | | - 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | - 48 | fts_table_content | c0 | 2 | | | | | | - 48 | fts_table_content | c1 | 3 | | | | | | - 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | - 49 | fts_table_docsize | sz | 2 | | | | | | - 50 | fts_table_config | k | 1 | | | | | | - 50 | fts_table_config | v | 2 | | | | | | - 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | - 51 | RO_RW_test | a | 2 | | 1073741824 | | | | - 51 | RO_RW_test | b | 3 | | | 53 | 2 | | - 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | - 52 | Unicode data | i | 1 | | 1073741824 | | | | - 52 | Unicode data | t | 2 | | 1073741824 | | | | - 53 | type_BOOLEAN_oper | i | 1 | | | | | | - 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | - 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | - 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | - 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | - 54 | ♁ | geom | 1 | | | | | | - 54 | ♁ | osm_type | 2 | 16 | 64 | | | | - 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | - 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | - 54 | ♁ | arr | 5 | | 1073741824 | | | | - 54 | ♁ | t | 6 | | | | | | - 55 | ♂ | id | 1 | | | 64 | 2 | 0 | - 55 | ♂ | UAI | 2 | 254 | 1016 | | | | - 55 | ♂ | ⌖ | 3 | | | | | | - 55 | ♂ | geom | 4 | | | | | | - 55 | ♂ | t₀ | 5 | | | | | | 0 - 55 | ♂ | class | 6 | | 1073741824 | | | | - 55 | ♂ | URL | 7 | 80 | 320 | | | | -(159 rows) - ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen -----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- - 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER - 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER - 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER - 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER - 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER - 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER - 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER - 5 | t | a | 1 | | | | 1 | NO | NO | NEVER - 5 | t | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER - 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER - 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER - 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER - 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER - 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER - 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER - 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER - 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER - 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER - 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER - 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER - 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER - 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER - 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER - 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER - 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER - 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER - 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER - 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER - 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER - 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER - 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER - 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER - 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER - 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER - 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER - 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER - 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER - 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER - 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER - 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER - 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER - 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER - 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER - 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER - 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER - 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER - 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER - 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER - 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER - 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER - 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER - 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER - 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER - 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER - 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER - 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER - 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER - 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER - 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER - 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER - 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER - 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER - 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER - 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER - 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER - 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER - 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER - 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER - 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER - 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER - 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER - 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER - 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER - 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER - 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER - 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER - 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER - 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER - 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER - 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER - 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER - 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER - 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER - 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER - 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER - 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER - 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER - 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER - 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER - 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER - 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER - 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER - 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER - 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER - 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER - 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER - 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER - 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER - 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER - 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER - 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER - 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER - 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER - 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER - 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER - 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER - 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER - 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER - 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER - 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER - 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER - 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER - 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER - 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER - 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER - 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER -(159 rows) - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - table_catalog | table_schema | table_name | column_name | option_name | option_value ---------------------+--------------+-------------------+---------------+-------------+-------------- - contrib_regression | public | department | department_id | key | true - contrib_regression | public | employee | emp_id | key | true - contrib_regression | public | empdata | emp_id | key | true - contrib_regression | public | numbers | a | key | true - contrib_regression | public | t | a | key | true - contrib_regression | public | multiprimary | b | key | true - contrib_regression | public | multiprimary | c | key | true - contrib_regression | public | columntest | a a | key | true - contrib_regression | public | columntest | b b | key | true - contrib_regression | public | limittest | id | key | true - contrib_regression | public | grem1_1 | a | key | true - contrib_regression | public | grem1_2 | a | key | true - contrib_regression | public | case_exp | c1 | key | true - contrib_regression | public | type_STRING | col | key | true - contrib_regression | public | type_BOOLEANpk | col | key | true - contrib_regression | public | type_BOOLEAN | i | key | true - contrib_regression | public | type_BYTE | col | key | true - contrib_regression | public | type_SINT | col | key | true - contrib_regression | public | type_BINT | col | key | true - contrib_regression | public | type_INTEGER | col | key | true - contrib_regression | public | type_FLOAT | col | key | true - contrib_regression | public | type_DOUBLE | col | key | true - contrib_regression | public | type_TIMESTAMP | col | key | true - contrib_regression | public | type_BLOB | col | key | true - contrib_regression | public | type_DATE | col | key | true - contrib_regression | public | type_TIME | col | key | true - contrib_regression | public | type_UUIDpk | col | key | true - contrib_regression | public | type_MACADDRpk | col | key | true - contrib_regression | public | type_MACADDR8pk | col | key | true - contrib_regression | public | BitT | p | key | true - contrib_regression | public | type_TEXT | col | key | true - contrib_regression | public | shorty | id | key | true - contrib_regression | public | A a | col | key | true - contrib_regression | public | fts_table_data | id | key | true - contrib_regression | public | fts_table_idx | segid | key | true - contrib_regression | public | fts_table_idx | term | key | true - contrib_regression | public | fts_table_content | id | key | true - contrib_regression | public | fts_table_docsize | id | key | true - contrib_regression | public | fts_table_config | k | key | true - contrib_regression | public | RO_RW_test | i | key | true - contrib_regression | public | Unicode data | i | key | true -(41 rows) - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/gis_ok/type.out b/expected/15.7/gis_ok/type.out deleted file mode 100644 index c5eccfaf..00000000 --- a/expected/15.7/gis_ok/type.out +++ /dev/null @@ -1,539 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col ---------------------------------------------- - [1,2,"foo",null] - {"bar":"baz","balance":7.77,"active":false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/libsqlite.out b/expected/15.7/libsqlite.out index 087bfd53..fe4fe2f8 100644 --- a/expected/15.7/libsqlite.out +++ b/expected/15.7/libsqlite.out @@ -22,9 +22,5 @@ SELECT sqlite_fdw_sqlite_code_source(); 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde (1 row) ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/sqlite_fdw.out b/expected/15.7/sqlite_fdw.out index 953bafc7..876eb7ee 100644 --- a/expected/15.7/sqlite_fdw.out +++ b/expected/15.7/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; diff --git a/expected/15.7/types/bitstring.out b/expected/15.7/types/bitstring.out new file mode 100644 index 00000000..211ddf3e --- /dev/null +++ b/expected/15.7/types/bitstring.out @@ -0,0 +1,807 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 02: +CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); +--Testcase 03: +DROP FOREIGN TABLE IF EXISTS "type_BIT+"; +NOTICE: foreign table "type_BIT+" does not exist, skipping +--Testcase 04: +CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); +--Testcase 05: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 06: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 07: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); +ERROR: bit string length 1 does not match type bit(6) +--Testcase 08: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); +ERROR: bit string length 2 does not match type bit(6) +--Testcase 09: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); +ERROR: bit string length 3 does not match type bit(6) +--Testcase 10: +INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); +--Testcase 11: +INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); +--Testcase 12: +INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); +--Testcase 13: +INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); +--Testcase 14: type mismatch with proper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 15: +SELECT * FROM "type_BIT+"; + i | b | t | l | bi +---+--------+---------+---+---- + 6 | 110110 | integer | 2 | 54 + 7 | 111001 | integer | 2 | 57 + 8 | 110000 | integer | 2 | 48 + 9 | 100001 | integer | 2 | 33 +(4 rows) + +--Testcase 16: +SELECT * FROM "type_BIT" WHERE b < '110110'; + i | b +---+-------- + 8 | 110000 + 9 | 100001 +(2 rows) + +--Testcase 17: +SELECT * FROM "type_BIT" WHERE b > '110110'; + i | b +---+-------- + 7 | 111001 +(1 row) + +--Testcase 18: +SELECT * FROM "type_BIT" WHERE b = '110110'; + i | b +---+-------- + 6 | 110110 +(1 row) + +--Testcase 20: +CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); +--Testcase 21: +DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; +NOTICE: foreign table "type_VARBIT+" does not exist, skipping +--Testcase 22: +CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); +--Testcase 23: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); +--Testcase 24: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); +--Testcase 25: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); +--Testcase 26: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); +--Testcase 27: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); +--Testcase 28: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); +--Testcase 29: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); +--Testcase 30: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); +--Testcase 31: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); +--Testcase 32: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); +--Testcase 33: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); +--Testcase 34: +SELECT * FROM "type_VARBIT+"; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 6 | 110110 | integer | 2 + 7 | 111001 | integer | 2 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(11 rows) + +--Testcase 35: +SELECT * FROM "type_VARBIT+" WHERE b < '110110'; + i | b | t | l +---+--------+---------+--- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 +(7 rows) + +--Testcase 36: +SELECT * FROM "type_VARBIT+" WHERE b > '110110'; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 7 | 111001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(3 rows) + +--Testcase 37: +SELECT * FROM "type_VARBIT+" WHERE b = '110110'; + i | b | t | l +---+--------+---------+--- + 6 | 110110 | integer | 2 +(1 row) + +--Testcase 38: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); +--Testcase 39: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); +--Testcase 40: very long bit string, expected ERROR, 65 bits +INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); +ERROR: SQLite FDW dosens't support very long bit/varbit data +HINT: bit length 65, maximum 64 +--Testcase 41: +SELECT * FROM "type_VARBIT+" WHERE "i" > 10; + i | b | t | l +----+-----------------------------------------------------------------+---------+---- + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 +(3 rows) + +--Testcase 42: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 111111 + 6 | 110110 | 8 | 110000 | 110110 + 6 | 110110 | 9 | 100001 | 110111 + 7 | 111001 | 6 | 110110 | 111111 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 111001 + 7 | 111001 | 9 | 100001 | 111001 + 8 | 110000 | 6 | 110110 | 110110 + 8 | 110000 | 7 | 111001 | 111001 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 110001 + 9 | 100001 | 6 | 110110 | 110111 + 9 | 100001 | 7 | 111001 | 111001 + 9 | 100001 | 8 | 110000 | 110001 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 43: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 110000 + 6 | 110110 | 8 | 110000 | 110000 + 6 | 110110 | 9 | 100001 | 100000 + 7 | 111001 | 6 | 110110 | 110000 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 110000 + 7 | 111001 | 9 | 100001 | 100001 + 8 | 110000 | 6 | 110110 | 110000 + 8 | 110000 | 7 | 111001 | 110000 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 100000 + 9 | 100001 | 6 | 110110 | 100000 + 9 | 100001 | 7 | 111001 | 100001 + 9 | 100001 | 8 | 110000 | 100000 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 44: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 000000 + 6 | 110110 | 7 | 111001 | 001111 + 6 | 110110 | 8 | 110000 | 000110 + 6 | 110110 | 9 | 100001 | 010111 + 7 | 111001 | 6 | 110110 | 001111 + 7 | 111001 | 7 | 111001 | 000000 + 7 | 111001 | 8 | 110000 | 001001 + 7 | 111001 | 9 | 100001 | 011000 + 8 | 110000 | 6 | 110110 | 000110 + 8 | 110000 | 7 | 111001 | 001001 + 8 | 110000 | 8 | 110000 | 000000 + 8 | 110000 | 9 | 100001 | 010001 + 9 | 100001 | 6 | 110110 | 010111 + 9 | 100001 | 7 | 111001 | 011000 + 9 | 100001 | 8 | 110000 | 010001 + 9 | 100001 | 9 | 100001 | 000000 +(16 rows) + +--Testcase 45: +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 46: +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 47: +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 +(4 rows) + +--Testcase 48: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 49: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 50: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 51: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 52: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b << 3) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 53: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (~ b) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 54: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot OR bit strings of different sizes +--Testcase 55: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot AND bit strings of different sizes +--Testcase 56: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot XOR bit strings of different sizes +--Testcase 57: +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 001 + 5 | 101 | 001 + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 +(13 rows) + +--Testcase 58: +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 000 + 5 | 101 | 000 + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 +(13 rows) + +--Testcase 59: +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 01 + 3 | 11 | 00 + 4 | 100 | 011 + 5 | 101 | 010 + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 +(13 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 61: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 62: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 63: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 64: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" << 3) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 65: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, (~ (b)::"bit") + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 66: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 67: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 68: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 69: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 70: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 71: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 72: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 73: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 74: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 75: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 76: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 77: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 78: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 79: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 80: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 81: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 82: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 83: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 84: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 85: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 86: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 87: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 88: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 89: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 90: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 91: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 92: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 93: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 94: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 95: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 005: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BIT" +drop cascades to foreign table "type_BIT+" +drop cascades to foreign table "type_VARBIT" +drop cascades to foreign table "type_VARBIT+" diff --git a/expected/15.7/types/bool.out b/expected/15.7/types/bool.out new file mode 100644 index 00000000..92c66f7e --- /dev/null +++ b/expected/15.7/types/bool.out @@ -0,0 +1,1273 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 000: +CREATE EXTENSION sqlite_fdw; +--Testcase 001: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 01: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; +--Testcase 02: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); +--Testcase 03: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); +--Testcase 04: +CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); +--Testcase 05: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; +--Testcase 06: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); +--Testcase 07: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); +--Testcase 08: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); +--Testcase 09: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); +--Testcase 10: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); +--Testcase 11: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); +--Testcase 12: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); +--Testcase 13: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); +--Testcase 14: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); +--Testcase 15: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); +--Testcase 16: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); +--Testcase 17: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); +--Testcase 18: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); +--Testcase 19: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); +--Testcase 20: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); +--Testcase 21: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); +--Testcase 22: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); +--Testcase 23: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); +--Testcase 24: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); +--Testcase 25: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); +--Testcase 26: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); +--Testcase 27: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); +--Testcase 28: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); +--Testcase 29: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); +--Testcase 30: +SELECT * FROM "type_BOOLEAN"; + i | b +----+------- + 1 | 1 + 2 | 0 + 3 | true + 4 | false + 5 | true + 6 | false + 7 | Yes + 8 | YeS + 9 | yes + 10 | no + 11 | No + 12 | nO + 13 | off + 14 | oFf + 15 | on + 16 | ON + 17 | t + 18 | T + 19 | Y + 20 | y + 21 | F + 22 | f + 23 | x + 24 | 0 + 25 | 1 + 26 | +(26 rows) + +--Testcase 31: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 32: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN"; + QUERY PLAN +--------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN" + Output: i, b + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" +(3 rows) + +--Testcase 33: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN+"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" + Output: i, b, t, l + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 34: ERR - invalid text affinity because not ISO:SQL text input +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "text" affinity (1 bytes) : 'x' +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 35 +DELETE FROM "type_BOOLEAN" WHERE i = 23; +--Testcase 36: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 37: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; + i | b | t | l +----+---+------+--- + 26 | | null | +(1 row) + +--Testcase 38: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 +(24 rows) + +--Testcase 39: +SELECT * FROM "type_BOOLEAN+" WHERE b; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 3 | t | text | 4 + 5 | t | text | 4 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 25 | t | integer | 1 +(13 rows) + +--Testcase 40: +SELECT * FROM "type_BOOLEAN+" WHERE NOT b; + i | b | t | l +----+---+---------+--- + 2 | f | integer | 1 + 4 | f | text | 5 + 6 | f | text | 5 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 +(11 rows) + +--Testcase 41: +CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 42: +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +--Testcase 43: +INSERT INTO "type_BOOLEANpk" VALUES (FALSE); +--Testcase 44: ERR - primary key +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) +--Testcase 45: +DELETE FROM "type_BOOLEANpk"; +--Testcase 46: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; +--Testcase 47: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); +--Testcase 48: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 49: ERR - invalid float for bool column +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "real" affinity : 3.14159265358979 +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 50 +DELETE FROM "type_BOOLEAN" WHERE i = 27; +--Testcase 51: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 52: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE b; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 53: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 54: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE b; + QUERY PLAN +------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 55: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE NOT b; + QUERY PLAN +------------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 56: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" b + Output: i, b, t, l, (NOT b) + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 57: +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + i | b | t | l | nb +----+---+---------+---+---- + 1 | t | integer | 1 | f + 2 | f | integer | 1 | t + 3 | t | text | 4 | f + 4 | f | text | 5 | t + 5 | t | text | 4 | f + 6 | f | text | 5 | t + 7 | t | text | 3 | f + 8 | t | text | 3 | f + 9 | t | text | 3 | f + 10 | f | text | 2 | t + 11 | f | text | 2 | t + 12 | f | text | 2 | t + 13 | f | text | 3 | t + 14 | f | text | 3 | t + 15 | t | text | 2 | f + 16 | t | text | 2 | f + 17 | t | text | 1 | f + 18 | t | text | 1 | f + 19 | t | text | 1 | f + 20 | t | text | 1 | f + 21 | f | text | 1 | t + 22 | f | text | 1 | t + 24 | f | integer | 1 | t + 25 | t | integer | 1 | f + 26 | | null | | +(25 rows) + +--Testcase 58: +CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); +--Testcase 59: see INIT.SQL with mixed affinity boolean data +SELECT * FROM "type_BOOLEAN_oper"; + i | i1 | b1 | i2 | b2 +-----+----+----+----+---- + 1 | 1 | t | 1 | t + 2 | 1 | t | 2 | t + 3 | 1 | t | 3 | t + 4 | 1 | t | 4 | t + 5 | 1 | t | 5 | t + 6 | 1 | t | 6 | t + 7 | 1 | t | 7 | t + 8 | 1 | t | 8 | t + 9 | 1 | t | 9 | t + 10 | 1 | t | 10 | t + 11 | 1 | t | 11 | t + 12 | 1 | t | 12 | t + 13 | 1 | t | 13 | t + 14 | 1 | t | 14 | f + 15 | 1 | t | 15 | f + 16 | 1 | t | 16 | f + 17 | 1 | t | 17 | f + 18 | 1 | t | 18 | f + 19 | 1 | t | 19 | f + 20 | 1 | t | 20 | f + 21 | 1 | t | 21 | f + 22 | 1 | t | 22 | f + 23 | 1 | t | 23 | f + 24 | 1 | t | 24 | f + 25 | 1 | t | 25 | f + 26 | 1 | t | 26 | f + 27 | 1 | t | 27 | + 28 | 2 | t | 1 | t + 29 | 2 | t | 2 | t + 30 | 2 | t | 3 | t + 31 | 2 | t | 4 | t + 32 | 2 | t | 5 | t + 33 | 2 | t | 6 | t + 34 | 2 | t | 7 | t + 35 | 2 | t | 8 | t + 36 | 2 | t | 9 | t + 37 | 2 | t | 10 | t + 38 | 2 | t | 11 | t + 39 | 2 | t | 12 | t + 40 | 2 | t | 13 | t + 41 | 2 | t | 14 | f + 42 | 2 | t | 15 | f + 43 | 2 | t | 16 | f + 44 | 2 | t | 17 | f + 45 | 2 | t | 18 | f + 46 | 2 | t | 19 | f + 47 | 2 | t | 20 | f + 48 | 2 | t | 21 | f + 49 | 2 | t | 22 | f + 50 | 2 | t | 23 | f + 51 | 2 | t | 24 | f + 52 | 2 | t | 25 | f + 53 | 2 | t | 26 | f + 54 | 2 | t | 27 | + 55 | 3 | t | 1 | t + 56 | 3 | t | 2 | t + 57 | 3 | t | 3 | t + 58 | 3 | t | 4 | t + 59 | 3 | t | 5 | t + 60 | 3 | t | 6 | t + 61 | 3 | t | 7 | t + 62 | 3 | t | 8 | t + 63 | 3 | t | 9 | t + 64 | 3 | t | 10 | t + 65 | 3 | t | 11 | t + 66 | 3 | t | 12 | t + 67 | 3 | t | 13 | t + 68 | 3 | t | 14 | f + 69 | 3 | t | 15 | f + 70 | 3 | t | 16 | f + 71 | 3 | t | 17 | f + 72 | 3 | t | 18 | f + 73 | 3 | t | 19 | f + 74 | 3 | t | 20 | f + 75 | 3 | t | 21 | f + 76 | 3 | t | 22 | f + 77 | 3 | t | 23 | f + 78 | 3 | t | 24 | f + 79 | 3 | t | 25 | f + 80 | 3 | t | 26 | f + 81 | 3 | t | 27 | + 82 | 4 | t | 1 | t + 83 | 4 | t | 2 | t + 84 | 4 | t | 3 | t + 85 | 4 | t | 4 | t + 86 | 4 | t | 5 | t + 87 | 4 | t | 6 | t + 88 | 4 | t | 7 | t + 89 | 4 | t | 8 | t + 90 | 4 | t | 9 | t + 91 | 4 | t | 10 | t + 92 | 4 | t | 11 | t + 93 | 4 | t | 12 | t + 94 | 4 | t | 13 | t + 95 | 4 | t | 14 | f + 96 | 4 | t | 15 | f + 97 | 4 | t | 16 | f + 98 | 4 | t | 17 | f + 99 | 4 | t | 18 | f + 100 | 4 | t | 19 | f + 101 | 4 | t | 20 | f + 102 | 4 | t | 21 | f + 103 | 4 | t | 22 | f + 104 | 4 | t | 23 | f + 105 | 4 | t | 24 | f + 106 | 4 | t | 25 | f + 107 | 4 | t | 26 | f + 108 | 4 | t | 27 | + 109 | 5 | t | 1 | t + 110 | 5 | t | 2 | t + 111 | 5 | t | 3 | t + 112 | 5 | t | 4 | t + 113 | 5 | t | 5 | t + 114 | 5 | t | 6 | t + 115 | 5 | t | 7 | t + 116 | 5 | t | 8 | t + 117 | 5 | t | 9 | t + 118 | 5 | t | 10 | t + 119 | 5 | t | 11 | t + 120 | 5 | t | 12 | t + 121 | 5 | t | 13 | t + 122 | 5 | t | 14 | f + 123 | 5 | t | 15 | f + 124 | 5 | t | 16 | f + 125 | 5 | t | 17 | f + 126 | 5 | t | 18 | f + 127 | 5 | t | 19 | f + 128 | 5 | t | 20 | f + 129 | 5 | t | 21 | f + 130 | 5 | t | 22 | f + 131 | 5 | t | 23 | f + 132 | 5 | t | 24 | f + 133 | 5 | t | 25 | f + 134 | 5 | t | 26 | f + 135 | 5 | t | 27 | + 136 | 6 | t | 1 | t + 137 | 6 | t | 2 | t + 138 | 6 | t | 3 | t + 139 | 6 | t | 4 | t + 140 | 6 | t | 5 | t + 141 | 6 | t | 6 | t + 142 | 6 | t | 7 | t + 143 | 6 | t | 8 | t + 144 | 6 | t | 9 | t + 145 | 6 | t | 10 | t + 146 | 6 | t | 11 | t + 147 | 6 | t | 12 | t + 148 | 6 | t | 13 | t + 149 | 6 | t | 14 | f + 150 | 6 | t | 15 | f + 151 | 6 | t | 16 | f + 152 | 6 | t | 17 | f + 153 | 6 | t | 18 | f + 154 | 6 | t | 19 | f + 155 | 6 | t | 20 | f + 156 | 6 | t | 21 | f + 157 | 6 | t | 22 | f + 158 | 6 | t | 23 | f + 159 | 6 | t | 24 | f + 160 | 6 | t | 25 | f + 161 | 6 | t | 26 | f + 162 | 6 | t | 27 | + 163 | 7 | t | 1 | t + 164 | 7 | t | 2 | t + 165 | 7 | t | 3 | t + 166 | 7 | t | 4 | t + 167 | 7 | t | 5 | t + 168 | 7 | t | 6 | t + 169 | 7 | t | 7 | t + 170 | 7 | t | 8 | t + 171 | 7 | t | 9 | t + 172 | 7 | t | 10 | t + 173 | 7 | t | 11 | t + 174 | 7 | t | 12 | t + 175 | 7 | t | 13 | t + 176 | 7 | t | 14 | f + 177 | 7 | t | 15 | f + 178 | 7 | t | 16 | f + 179 | 7 | t | 17 | f + 180 | 7 | t | 18 | f + 181 | 7 | t | 19 | f + 182 | 7 | t | 20 | f + 183 | 7 | t | 21 | f + 184 | 7 | t | 22 | f + 185 | 7 | t | 23 | f + 186 | 7 | t | 24 | f + 187 | 7 | t | 25 | f + 188 | 7 | t | 26 | f + 189 | 7 | t | 27 | + 190 | 8 | t | 1 | t + 191 | 8 | t | 2 | t + 192 | 8 | t | 3 | t + 193 | 8 | t | 4 | t + 194 | 8 | t | 5 | t + 195 | 8 | t | 6 | t + 196 | 8 | t | 7 | t + 197 | 8 | t | 8 | t + 198 | 8 | t | 9 | t + 199 | 8 | t | 10 | t + 200 | 8 | t | 11 | t + 201 | 8 | t | 12 | t + 202 | 8 | t | 13 | t + 203 | 8 | t | 14 | f + 204 | 8 | t | 15 | f + 205 | 8 | t | 16 | f + 206 | 8 | t | 17 | f + 207 | 8 | t | 18 | f + 208 | 8 | t | 19 | f + 209 | 8 | t | 20 | f + 210 | 8 | t | 21 | f + 211 | 8 | t | 22 | f + 212 | 8 | t | 23 | f + 213 | 8 | t | 24 | f + 214 | 8 | t | 25 | f + 215 | 8 | t | 26 | f + 216 | 8 | t | 27 | + 217 | 9 | t | 1 | t + 218 | 9 | t | 2 | t + 219 | 9 | t | 3 | t + 220 | 9 | t | 4 | t + 221 | 9 | t | 5 | t + 222 | 9 | t | 6 | t + 223 | 9 | t | 7 | t + 224 | 9 | t | 8 | t + 225 | 9 | t | 9 | t + 226 | 9 | t | 10 | t + 227 | 9 | t | 11 | t + 228 | 9 | t | 12 | t + 229 | 9 | t | 13 | t + 230 | 9 | t | 14 | f + 231 | 9 | t | 15 | f + 232 | 9 | t | 16 | f + 233 | 9 | t | 17 | f + 234 | 9 | t | 18 | f + 235 | 9 | t | 19 | f + 236 | 9 | t | 20 | f + 237 | 9 | t | 21 | f + 238 | 9 | t | 22 | f + 239 | 9 | t | 23 | f + 240 | 9 | t | 24 | f + 241 | 9 | t | 25 | f + 242 | 9 | t | 26 | f + 243 | 9 | t | 27 | + 244 | 10 | t | 1 | t + 245 | 10 | t | 2 | t + 246 | 10 | t | 3 | t + 247 | 10 | t | 4 | t + 248 | 10 | t | 5 | t + 249 | 10 | t | 6 | t + 250 | 10 | t | 7 | t + 251 | 10 | t | 8 | t + 252 | 10 | t | 9 | t + 253 | 10 | t | 10 | t + 254 | 10 | t | 11 | t + 255 | 10 | t | 12 | t + 256 | 10 | t | 13 | t + 257 | 10 | t | 14 | f + 258 | 10 | t | 15 | f + 259 | 10 | t | 16 | f + 260 | 10 | t | 17 | f + 261 | 10 | t | 18 | f + 262 | 10 | t | 19 | f + 263 | 10 | t | 20 | f + 264 | 10 | t | 21 | f + 265 | 10 | t | 22 | f + 266 | 10 | t | 23 | f + 267 | 10 | t | 24 | f + 268 | 10 | t | 25 | f + 269 | 10 | t | 26 | f + 270 | 10 | t | 27 | + 271 | 11 | t | 1 | t + 272 | 11 | t | 2 | t + 273 | 11 | t | 3 | t + 274 | 11 | t | 4 | t + 275 | 11 | t | 5 | t + 276 | 11 | t | 6 | t + 277 | 11 | t | 7 | t + 278 | 11 | t | 8 | t + 279 | 11 | t | 9 | t + 280 | 11 | t | 10 | t + 281 | 11 | t | 11 | t + 282 | 11 | t | 12 | t + 283 | 11 | t | 13 | t + 284 | 11 | t | 14 | f + 285 | 11 | t | 15 | f + 286 | 11 | t | 16 | f + 287 | 11 | t | 17 | f + 288 | 11 | t | 18 | f + 289 | 11 | t | 19 | f + 290 | 11 | t | 20 | f + 291 | 11 | t | 21 | f + 292 | 11 | t | 22 | f + 293 | 11 | t | 23 | f + 294 | 11 | t | 24 | f + 295 | 11 | t | 25 | f + 296 | 11 | t | 26 | f + 297 | 11 | t | 27 | + 298 | 12 | t | 1 | t + 299 | 12 | t | 2 | t + 300 | 12 | t | 3 | t + 301 | 12 | t | 4 | t + 302 | 12 | t | 5 | t + 303 | 12 | t | 6 | t + 304 | 12 | t | 7 | t + 305 | 12 | t | 8 | t + 306 | 12 | t | 9 | t + 307 | 12 | t | 10 | t + 308 | 12 | t | 11 | t + 309 | 12 | t | 12 | t + 310 | 12 | t | 13 | t + 311 | 12 | t | 14 | f + 312 | 12 | t | 15 | f + 313 | 12 | t | 16 | f + 314 | 12 | t | 17 | f + 315 | 12 | t | 18 | f + 316 | 12 | t | 19 | f + 317 | 12 | t | 20 | f + 318 | 12 | t | 21 | f + 319 | 12 | t | 22 | f + 320 | 12 | t | 23 | f + 321 | 12 | t | 24 | f + 322 | 12 | t | 25 | f + 323 | 12 | t | 26 | f + 324 | 12 | t | 27 | + 325 | 13 | t | 1 | t + 326 | 13 | t | 2 | t + 327 | 13 | t | 3 | t + 328 | 13 | t | 4 | t + 329 | 13 | t | 5 | t + 330 | 13 | t | 6 | t + 331 | 13 | t | 7 | t + 332 | 13 | t | 8 | t + 333 | 13 | t | 9 | t + 334 | 13 | t | 10 | t + 335 | 13 | t | 11 | t + 336 | 13 | t | 12 | t + 337 | 13 | t | 13 | t + 338 | 13 | t | 14 | f + 339 | 13 | t | 15 | f + 340 | 13 | t | 16 | f + 341 | 13 | t | 17 | f + 342 | 13 | t | 18 | f + 343 | 13 | t | 19 | f + 344 | 13 | t | 20 | f + 345 | 13 | t | 21 | f + 346 | 13 | t | 22 | f + 347 | 13 | t | 23 | f + 348 | 13 | t | 24 | f + 349 | 13 | t | 25 | f + 350 | 13 | t | 26 | f + 351 | 13 | t | 27 | + 352 | 14 | f | 1 | t + 353 | 14 | f | 2 | t + 354 | 14 | f | 3 | t + 355 | 14 | f | 4 | t + 356 | 14 | f | 5 | t + 357 | 14 | f | 6 | t + 358 | 14 | f | 7 | t + 359 | 14 | f | 8 | t + 360 | 14 | f | 9 | t + 361 | 14 | f | 10 | t + 362 | 14 | f | 11 | t + 363 | 14 | f | 12 | t + 364 | 14 | f | 13 | t + 365 | 14 | f | 14 | f + 366 | 14 | f | 15 | f + 367 | 14 | f | 16 | f + 368 | 14 | f | 17 | f + 369 | 14 | f | 18 | f + 370 | 14 | f | 19 | f + 371 | 14 | f | 20 | f + 372 | 14 | f | 21 | f + 373 | 14 | f | 22 | f + 374 | 14 | f | 23 | f + 375 | 14 | f | 24 | f + 376 | 14 | f | 25 | f + 377 | 14 | f | 26 | f + 378 | 14 | f | 27 | + 379 | 15 | f | 1 | t + 380 | 15 | f | 2 | t + 381 | 15 | f | 3 | t + 382 | 15 | f | 4 | t + 383 | 15 | f | 5 | t + 384 | 15 | f | 6 | t + 385 | 15 | f | 7 | t + 386 | 15 | f | 8 | t + 387 | 15 | f | 9 | t + 388 | 15 | f | 10 | t + 389 | 15 | f | 11 | t + 390 | 15 | f | 12 | t + 391 | 15 | f | 13 | t + 392 | 15 | f | 14 | f + 393 | 15 | f | 15 | f + 394 | 15 | f | 16 | f + 395 | 15 | f | 17 | f + 396 | 15 | f | 18 | f + 397 | 15 | f | 19 | f + 398 | 15 | f | 20 | f + 399 | 15 | f | 21 | f + 400 | 15 | f | 22 | f + 401 | 15 | f | 23 | f + 402 | 15 | f | 24 | f + 403 | 15 | f | 25 | f + 404 | 15 | f | 26 | f + 405 | 15 | f | 27 | + 406 | 16 | f | 1 | t + 407 | 16 | f | 2 | t + 408 | 16 | f | 3 | t + 409 | 16 | f | 4 | t + 410 | 16 | f | 5 | t + 411 | 16 | f | 6 | t + 412 | 16 | f | 7 | t + 413 | 16 | f | 8 | t + 414 | 16 | f | 9 | t + 415 | 16 | f | 10 | t + 416 | 16 | f | 11 | t + 417 | 16 | f | 12 | t + 418 | 16 | f | 13 | t + 419 | 16 | f | 14 | f + 420 | 16 | f | 15 | f + 421 | 16 | f | 16 | f + 422 | 16 | f | 17 | f + 423 | 16 | f | 18 | f + 424 | 16 | f | 19 | f + 425 | 16 | f | 20 | f + 426 | 16 | f | 21 | f + 427 | 16 | f | 22 | f + 428 | 16 | f | 23 | f + 429 | 16 | f | 24 | f + 430 | 16 | f | 25 | f + 431 | 16 | f | 26 | f + 432 | 16 | f | 27 | + 433 | 17 | f | 1 | t + 434 | 17 | f | 2 | t + 435 | 17 | f | 3 | t + 436 | 17 | f | 4 | t + 437 | 17 | f | 5 | t + 438 | 17 | f | 6 | t + 439 | 17 | f | 7 | t + 440 | 17 | f | 8 | t + 441 | 17 | f | 9 | t + 442 | 17 | f | 10 | t + 443 | 17 | f | 11 | t + 444 | 17 | f | 12 | t + 445 | 17 | f | 13 | t + 446 | 17 | f | 14 | f + 447 | 17 | f | 15 | f + 448 | 17 | f | 16 | f + 449 | 17 | f | 17 | f + 450 | 17 | f | 18 | f + 451 | 17 | f | 19 | f + 452 | 17 | f | 20 | f + 453 | 17 | f | 21 | f + 454 | 17 | f | 22 | f + 455 | 17 | f | 23 | f + 456 | 17 | f | 24 | f + 457 | 17 | f | 25 | f + 458 | 17 | f | 26 | f + 459 | 17 | f | 27 | + 460 | 18 | f | 1 | t + 461 | 18 | f | 2 | t + 462 | 18 | f | 3 | t + 463 | 18 | f | 4 | t + 464 | 18 | f | 5 | t + 465 | 18 | f | 6 | t + 466 | 18 | f | 7 | t + 467 | 18 | f | 8 | t + 468 | 18 | f | 9 | t + 469 | 18 | f | 10 | t + 470 | 18 | f | 11 | t + 471 | 18 | f | 12 | t + 472 | 18 | f | 13 | t + 473 | 18 | f | 14 | f + 474 | 18 | f | 15 | f + 475 | 18 | f | 16 | f + 476 | 18 | f | 17 | f + 477 | 18 | f | 18 | f + 478 | 18 | f | 19 | f + 479 | 18 | f | 20 | f + 480 | 18 | f | 21 | f + 481 | 18 | f | 22 | f + 482 | 18 | f | 23 | f + 483 | 18 | f | 24 | f + 484 | 18 | f | 25 | f + 485 | 18 | f | 26 | f + 486 | 18 | f | 27 | + 487 | 19 | f | 1 | t + 488 | 19 | f | 2 | t + 489 | 19 | f | 3 | t + 490 | 19 | f | 4 | t + 491 | 19 | f | 5 | t + 492 | 19 | f | 6 | t + 493 | 19 | f | 7 | t + 494 | 19 | f | 8 | t + 495 | 19 | f | 9 | t + 496 | 19 | f | 10 | t + 497 | 19 | f | 11 | t + 498 | 19 | f | 12 | t + 499 | 19 | f | 13 | t + 500 | 19 | f | 14 | f + 501 | 19 | f | 15 | f + 502 | 19 | f | 16 | f + 503 | 19 | f | 17 | f + 504 | 19 | f | 18 | f + 505 | 19 | f | 19 | f + 506 | 19 | f | 20 | f + 507 | 19 | f | 21 | f + 508 | 19 | f | 22 | f + 509 | 19 | f | 23 | f + 510 | 19 | f | 24 | f + 511 | 19 | f | 25 | f + 512 | 19 | f | 26 | f + 513 | 19 | f | 27 | + 514 | 20 | f | 1 | t + 515 | 20 | f | 2 | t + 516 | 20 | f | 3 | t + 517 | 20 | f | 4 | t + 518 | 20 | f | 5 | t + 519 | 20 | f | 6 | t + 520 | 20 | f | 7 | t + 521 | 20 | f | 8 | t + 522 | 20 | f | 9 | t + 523 | 20 | f | 10 | t + 524 | 20 | f | 11 | t + 525 | 20 | f | 12 | t + 526 | 20 | f | 13 | t + 527 | 20 | f | 14 | f + 528 | 20 | f | 15 | f + 529 | 20 | f | 16 | f + 530 | 20 | f | 17 | f + 531 | 20 | f | 18 | f + 532 | 20 | f | 19 | f + 533 | 20 | f | 20 | f + 534 | 20 | f | 21 | f + 535 | 20 | f | 22 | f + 536 | 20 | f | 23 | f + 537 | 20 | f | 24 | f + 538 | 20 | f | 25 | f + 539 | 20 | f | 26 | f + 540 | 20 | f | 27 | + 541 | 21 | f | 1 | t + 542 | 21 | f | 2 | t + 543 | 21 | f | 3 | t + 544 | 21 | f | 4 | t + 545 | 21 | f | 5 | t + 546 | 21 | f | 6 | t + 547 | 21 | f | 7 | t + 548 | 21 | f | 8 | t + 549 | 21 | f | 9 | t + 550 | 21 | f | 10 | t + 551 | 21 | f | 11 | t + 552 | 21 | f | 12 | t + 553 | 21 | f | 13 | t + 554 | 21 | f | 14 | f + 555 | 21 | f | 15 | f + 556 | 21 | f | 16 | f + 557 | 21 | f | 17 | f + 558 | 21 | f | 18 | f + 559 | 21 | f | 19 | f + 560 | 21 | f | 20 | f + 561 | 21 | f | 21 | f + 562 | 21 | f | 22 | f + 563 | 21 | f | 23 | f + 564 | 21 | f | 24 | f + 565 | 21 | f | 25 | f + 566 | 21 | f | 26 | f + 567 | 21 | f | 27 | + 568 | 22 | f | 1 | t + 569 | 22 | f | 2 | t + 570 | 22 | f | 3 | t + 571 | 22 | f | 4 | t + 572 | 22 | f | 5 | t + 573 | 22 | f | 6 | t + 574 | 22 | f | 7 | t + 575 | 22 | f | 8 | t + 576 | 22 | f | 9 | t + 577 | 22 | f | 10 | t + 578 | 22 | f | 11 | t + 579 | 22 | f | 12 | t + 580 | 22 | f | 13 | t + 581 | 22 | f | 14 | f + 582 | 22 | f | 15 | f + 583 | 22 | f | 16 | f + 584 | 22 | f | 17 | f + 585 | 22 | f | 18 | f + 586 | 22 | f | 19 | f + 587 | 22 | f | 20 | f + 588 | 22 | f | 21 | f + 589 | 22 | f | 22 | f + 590 | 22 | f | 23 | f + 591 | 22 | f | 24 | f + 592 | 22 | f | 25 | f + 593 | 22 | f | 26 | f + 594 | 22 | f | 27 | + 595 | 23 | f | 1 | t + 596 | 23 | f | 2 | t + 597 | 23 | f | 3 | t + 598 | 23 | f | 4 | t + 599 | 23 | f | 5 | t + 600 | 23 | f | 6 | t + 601 | 23 | f | 7 | t + 602 | 23 | f | 8 | t + 603 | 23 | f | 9 | t + 604 | 23 | f | 10 | t + 605 | 23 | f | 11 | t + 606 | 23 | f | 12 | t + 607 | 23 | f | 13 | t + 608 | 23 | f | 14 | f + 609 | 23 | f | 15 | f + 610 | 23 | f | 16 | f + 611 | 23 | f | 17 | f + 612 | 23 | f | 18 | f + 613 | 23 | f | 19 | f + 614 | 23 | f | 20 | f + 615 | 23 | f | 21 | f + 616 | 23 | f | 22 | f + 617 | 23 | f | 23 | f + 618 | 23 | f | 24 | f + 619 | 23 | f | 25 | f + 620 | 23 | f | 26 | f + 621 | 23 | f | 27 | + 622 | 24 | f | 1 | t + 623 | 24 | f | 2 | t + 624 | 24 | f | 3 | t + 625 | 24 | f | 4 | t + 626 | 24 | f | 5 | t + 627 | 24 | f | 6 | t + 628 | 24 | f | 7 | t + 629 | 24 | f | 8 | t + 630 | 24 | f | 9 | t + 631 | 24 | f | 10 | t + 632 | 24 | f | 11 | t + 633 | 24 | f | 12 | t + 634 | 24 | f | 13 | t + 635 | 24 | f | 14 | f + 636 | 24 | f | 15 | f + 637 | 24 | f | 16 | f + 638 | 24 | f | 17 | f + 639 | 24 | f | 18 | f + 640 | 24 | f | 19 | f + 641 | 24 | f | 20 | f + 642 | 24 | f | 21 | f + 643 | 24 | f | 22 | f + 644 | 24 | f | 23 | f + 645 | 24 | f | 24 | f + 646 | 24 | f | 25 | f + 647 | 24 | f | 26 | f + 648 | 24 | f | 27 | + 649 | 25 | f | 1 | t + 650 | 25 | f | 2 | t + 651 | 25 | f | 3 | t + 652 | 25 | f | 4 | t + 653 | 25 | f | 5 | t + 654 | 25 | f | 6 | t + 655 | 25 | f | 7 | t + 656 | 25 | f | 8 | t + 657 | 25 | f | 9 | t + 658 | 25 | f | 10 | t + 659 | 25 | f | 11 | t + 660 | 25 | f | 12 | t + 661 | 25 | f | 13 | t + 662 | 25 | f | 14 | f + 663 | 25 | f | 15 | f + 664 | 25 | f | 16 | f + 665 | 25 | f | 17 | f + 666 | 25 | f | 18 | f + 667 | 25 | f | 19 | f + 668 | 25 | f | 20 | f + 669 | 25 | f | 21 | f + 670 | 25 | f | 22 | f + 671 | 25 | f | 23 | f + 672 | 25 | f | 24 | f + 673 | 25 | f | 25 | f + 674 | 25 | f | 26 | f + 675 | 25 | f | 27 | + 676 | 26 | f | 1 | t + 677 | 26 | f | 2 | t + 678 | 26 | f | 3 | t + 679 | 26 | f | 4 | t + 680 | 26 | f | 5 | t + 681 | 26 | f | 6 | t + 682 | 26 | f | 7 | t + 683 | 26 | f | 8 | t + 684 | 26 | f | 9 | t + 685 | 26 | f | 10 | t + 686 | 26 | f | 11 | t + 687 | 26 | f | 12 | t + 688 | 26 | f | 13 | t + 689 | 26 | f | 14 | f + 690 | 26 | f | 15 | f + 691 | 26 | f | 16 | f + 692 | 26 | f | 17 | f + 693 | 26 | f | 18 | f + 694 | 26 | f | 19 | f + 695 | 26 | f | 20 | f + 696 | 26 | f | 21 | f + 697 | 26 | f | 22 | f + 698 | 26 | f | 23 | f + 699 | 26 | f | 24 | f + 700 | 26 | f | 25 | f + 701 | 26 | f | 26 | f + 702 | 26 | f | 27 | + 703 | 27 | | 1 | t + 704 | 27 | | 2 | t + 705 | 27 | | 3 | t + 706 | 27 | | 4 | t + 707 | 27 | | 5 | t + 708 | 27 | | 6 | t + 709 | 27 | | 7 | t + 710 | 27 | | 8 | t + 711 | 27 | | 9 | t + 712 | 27 | | 10 | t + 713 | 27 | | 11 | t + 714 | 27 | | 12 | t + 715 | 27 | | 13 | t + 716 | 27 | | 14 | f + 717 | 27 | | 15 | f + 718 | 27 | | 16 | f + 719 | 27 | | 17 | f + 720 | 27 | | 18 | f + 721 | 27 | | 19 | f + 722 | 27 | | 20 | f + 723 | 27 | | 21 | f + 724 | 27 | | 22 | f + 725 | 27 | | 23 | f + 726 | 27 | | 24 | f + 727 | 27 | | 25 | f + 728 | 27 | | 26 | f + 729 | 27 | | 27 | +(729 rows) + +--Testcase 60: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 61: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + b1 | b2 | a | o +----+----+---+--- + f | f | f | f + f | t | f | t + f | | f | + t | f | f | t + t | t | t | t + t | | | t + | f | f | + | t | | t + | | | +(9 rows) + +--Testcase 62: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 63: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + b1 | b2 | a | o +----+----+---+--- + t | t | t | t +(1 row) + +--Testcase 64: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 65: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + b1 | b2 | a | o +----+----+---+--- + f | t | f | t + t | f | f | t + t | t | t | t + t | | | t + | t | | t +(5 rows) + +--Testcase 66: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) +(3 rows) + +--Testcase 67: +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; +--Testcase 68: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + t | f + t | t + t | + | f + | t + | +(6 rows) + +--Testcase 69: +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; +--Testcase 70: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) +(3 rows) + +--Testcase 71: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | t + f | + | f + | +(5 rows) + +--Testcase 72: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Delete on public."type_BOOLEAN_oper" + -> Foreign Delete on public."type_BOOLEAN_oper" + SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) +(3 rows) + +--Testcase 73: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; +--Testcase 74: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | + | f + | +(4 rows) + +--Testcase 75: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; +--Testcase 76: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 77: +DELETE FROM "type_BOOLEAN_oper" WHERE b2; +--Testcase 78: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 79: +DELETE FROM "type_BOOLEAN"; +--Testcase 003: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BOOLEAN" +drop cascades to foreign table "type_BOOLEAN+" +drop cascades to foreign table "type_BOOLEANpk" +drop cascades to foreign table "type_BOOLEAN_oper" diff --git a/expected/15.7/types/macaddr.out b/expected/15.7/types/macaddr.out new file mode 100644 index 00000000..c87381b4 --- /dev/null +++ b/expected/15.7/types/macaddr.out @@ -0,0 +1,954 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); +--Testcase 012: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); +--Testcase 013: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); +--Testcase 014: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); +--Testcase 015: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); +--Testcase 016: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); +--Testcase 017: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); +--Testcase 018: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); +--Testcase 019: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); +--Testcase 020: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); +--Testcase 021: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); +--Testcase 022: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); +--Testcase 023: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); +--Testcase 024: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; +--Testcase 029: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); +--Testcase 030: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); +--Testcase 031: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); +--Testcase 032: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); +--Testcase 033: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); +--Testcase 034: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); +--Testcase 035: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); +--Testcase 036: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); +--Testcase 037: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); +--Testcase 038: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); +--Testcase 039: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); +--Testcase 040: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); +--Testcase 041: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); +--Testcase 042: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); +--Testcase 046: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); +--Testcase 047: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); +--Testcase 048: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); +--Testcase 049: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); +--Testcase 050: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); +--Testcase 051: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); +--Testcase 052: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); +--Testcase 053: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); +--Testcase 054: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); +--Testcase 055: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); +--Testcase 056: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); +--Testcase 057: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); +--Testcase 058: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); +--Testcase 062: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); +--Testcase 063: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); +--Testcase 064: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); +--Testcase 065: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); +--Testcase 066: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); +--Testcase 067: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); +--Testcase 068: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); +--Testcase 069: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); +--Testcase 070: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); +--Testcase 071: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); +--Testcase 072: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); +--Testcase 073: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); +--Testcase 074: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); +--Testcase 077: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); +--Testcase 108: +SELECT * FROM "type_MACADDR+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------+------+----+------------------- + 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; + i | m +----+------------------- + 63 | 00:00:00:00:00:01 + 64 | 00:00:00:00:00:02 + 65 | 00:00:00:00:00:03 + 66 | 00:00:01:00:00:00 + 67 | 00:00:02:00:00:00 + 68 | 00:00:03:00:00:00 + 60 | 01:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 62 | 03:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; + i | m +----+------------------- + 62 | 03:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 60 | 01:00:00:00:00:00 + 68 | 00:00:03:00:00:00 + 67 | 00:00:02:00:00:00 + 66 | 00:00:01:00:00:00 + 65 | 00:00:00:00:00:03 + 64 | 00:00:00:00:00:02 + 63 | 00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDRpk"; + col +------------------- + 01:02:03:04:05:06 + 01:02:03:04:05:06 + 01:02:03:04:05:06 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDRpk"; +--no macaddr operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m | '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m & '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m > '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m < '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m = '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m >= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <> '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR" +drop cascades to foreign table "type_MACADDR+" +drop cascades to foreign table "type_MACADDRpk" diff --git a/expected/15.7/types/macaddr8.out b/expected/15.7/types/macaddr8.out new file mode 100644 index 00000000..4d9ea111 --- /dev/null +++ b/expected/15.7/types/macaddr8.out @@ -0,0 +1,955 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); +--Testcase 012: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); +--Testcase 013: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); +--Testcase 014: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); +--Testcase 015: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); +--Testcase 016: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); +--Testcase 017: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); +--Testcase 018: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); +--Testcase 019: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); +--Testcase 020: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); +--Testcase 021: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); +--Testcase 022: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); +--Testcase 023: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); +--Testcase 024: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; +--Testcase 029: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); +--Testcase 030: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); +--Testcase 031: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); +--Testcase 032: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); +--Testcase 033: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); +--Testcase 034: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); +--Testcase 035: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); +--Testcase 036: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); +--Testcase 037: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); +--Testcase 038: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); +--Testcase 039: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); +--Testcase 040: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); +--Testcase 041: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); +--Testcase 042: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); +--Testcase 046: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); +--Testcase 047: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); +--Testcase 048: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); +--Testcase 049: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); +--Testcase 050: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); +--Testcase 051: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); +--Testcase 052: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); +--Testcase 053: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); +--Testcase 054: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); +--Testcase 055: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); +--Testcase 056: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); +--Testcase 057: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); +--Testcase 058: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); +--Testcase 062: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); +--Testcase 063: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); +--Testcase 064: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); +--Testcase 065: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); +--Testcase 066: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); +--Testcase 067: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); +--Testcase 068: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); +--Testcase 069: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); +--Testcase 070: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); +--Testcase 071: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); +--Testcase 072: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); +--Testcase 073: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); +--Testcase 074: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); +--Testcase 077: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); +--Testcase 108: +SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------------+------+----+------------------------- + 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR8"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; + i | m +----+------------------------- + 63 | 00:00:00:00:00:00:00:01 + 64 | 00:00:00:00:00:00:00:02 + 65 | 00:00:00:00:00:00:00:03 + 66 | 00:00:00:00:01:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 62 | 03:00:00:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; + i | m +----+------------------------- + 62 | 03:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 66 | 00:00:00:00:01:00:00:00 + 65 | 00:00:00:00:00:00:00:03 + 64 | 00:00:00:00:00:00:00:02 + 63 | 00:00:00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +ERROR: option "column_type" provided more than once +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDR8pk"; + col +------------------------- + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDR8pk"; +--no macaddr8 operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR8" +drop cascades to foreign table "type_MACADDR8+" +drop cascades to foreign table "type_MACADDR8pk" diff --git a/expected/15.7/types/uuid.out b/expected/15.7/types/uuid.out new file mode 100644 index 00000000..2ccbb635 --- /dev/null +++ b/expected/15.7/types/uuid.out @@ -0,0 +1,548 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); +--Testcase 010: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; +--Testcase 011: +INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 012: +INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 013: +INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 014: +INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 015: +INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 016: +INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 017: +INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 018: +INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 019: +INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 020: +INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 021: +INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 022: +INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 023: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 024: +INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 025: +INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 026: +INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 027: +INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 029: +INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 030: +INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 031: +INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 032: +INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 033: +INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 034: +INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 035: +INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 036: +INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 037: +INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 038: +INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 039: +INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 040: +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 041: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 042: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); +--Testcase 043: +INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 044: +INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 045: +INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 046: +INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 047: +INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 048: +INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 049: +INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 050: +INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 051: +INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 052: +INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 053: +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 054: +INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 056: +CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); +--Testcase 057: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(40 rows) + +--Testcase 058: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 059: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 060: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 061: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 062: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 063: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 064: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 065: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 066: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 067: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; +--Testcase 068: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) +(3 rows) + +--Testcase 069: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) +(3 rows) + +--Testcase 071: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 072: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; +--Testcase 073: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) +(3 rows) + +--Testcase 074: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(21 rows) + +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; +--Testcase 076: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 +(1 row) + +--Testcase 077: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 077: +SELECT * FROM "type_UUID+"; + i | u | t | l +---+---+---+--- +(0 rows) + +--Testcase 078: +INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); +--Testcase 079: +SELECT * FROM "type_UUID+" WHERE "i" = 41; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 +(1 row) + +--Testcase 080: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; +--Testcase 081: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 082: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 083: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) +(3 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 086: +INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); +--Testcase 087: +INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); +--Testcase 088: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 089: +SELECT * FROM "type_UUID+" WHERE "i" = 42; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 090: +SELECT * FROM "type_UUID+" WHERE "i" = 43; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 091: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); + QUERY PLAN +---------------------------------------------------------------------------- + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) +(3 rows) + +--Testcase 092: +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); +--Testcase 093: +INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); +--Testcase 094: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 + 44 | | null | +(2 rows) + +--Testcase 095: +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + i | u | t | l +----+---+------+--- + 44 | | null | +(1 row) + +--Testcase 096: +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) +(3 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) +(3 rows) + +--Testcase 100: +CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 101: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); +--Testcase 102: +INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 103: +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 104: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(2 rows) + +--Testcase 105: ERR - primary key +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) +--Testcase 106: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 107: NO ERR, but the same semantics! +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 108: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(3 rows) + +--Testcase 109: +DELETE FROM "type_UUIDpk"; +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_UUID" +drop cascades to foreign table "type_UUID+" +drop cascades to foreign table "type_UUIDpk" diff --git a/expected/15.7/with_gis_support/auto_import.out b/expected/15.7/with_gis_support/auto_import.out new file mode 100644 index 00000000..4c399770 --- /dev/null +++ b/expected/15.7/with_gis_support/auto_import.out @@ -0,0 +1,636 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/types/postgis.out b/expected/15.7/with_gis_support/postgis.out similarity index 99% rename from expected/15.7/types/postgis.out rename to expected/15.7/with_gis_support/postgis.out index 6fa60f26..6ce3d2b7 100644 --- a/expected/15.7/types/postgis.out +++ b/expected/15.7/with_gis_support/postgis.out @@ -4,7 +4,8 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; +NOTICE: extension "postgis" already exists, skipping --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/expected/15.7/with_gis_support/type.out b/expected/15.7/with_gis_support/type.out new file mode 100644 index 00000000..ab47b70c --- /dev/null +++ b/expected/15.7/with_gis_support/type.out @@ -0,0 +1,535 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/without_gis_support/auto_import.out b/expected/15.7/without_gis_support/auto_import.out new file mode 100644 index 00000000..4c399770 --- /dev/null +++ b/expected/15.7/without_gis_support/auto_import.out @@ -0,0 +1,636 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/15.7/types/nogis.out b/expected/15.7/without_gis_support/nogis.out similarity index 100% rename from expected/15.7/types/nogis.out rename to expected/15.7/without_gis_support/nogis.out diff --git a/expected/15.7/without_gis_support/type.out b/expected/15.7/without_gis_support/type.out new file mode 100644 index 00000000..ab47b70c --- /dev/null +++ b/expected/15.7/without_gis_support/type.out @@ -0,0 +1,535 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/extra/insert.out b/expected/16.3/extra/insert.out index c11ca213..ce96957d 100644 --- a/expected/16.3/extra/insert.out +++ b/expected/16.3/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite primary result code 19, extended result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/16.3/extra/sqlite_fdw_post.out b/expected/16.3/extra/sqlite_fdw_post.out index 500385b8..f1d9126d 100644 --- a/expected/16.3/extra/sqlite_fdw_post.out +++ b/expected/16.3/extra/sqlite_fdw_post.out @@ -6954,7 +6954,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -6965,12 +6965,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -7376,12 +7376,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/16.3/gis_ok/auto_import.out b/expected/16.3/gis_ok/auto_import.out deleted file mode 100644 index ec81e744..00000000 --- a/expected/16.3/gis_ok/auto_import.out +++ /dev/null @@ -1,638 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n ------------------------+----------------------+--------------------+------------------------+---------------------+---- - contrib_regression | public | department | contrib_regression | sqlite_svr | 1 - contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 - contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 - contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 - contrib_regression | public | t | contrib_regression | sqlite_svr | 5 - contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 - contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 - contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 - contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 - contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 - contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 - contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 - contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 - contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 - contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 - contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 - contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 - contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 - contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 - contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 - contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 - contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 - contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 - contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 - contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 - contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 - contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 - contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 - contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 - contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 - contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 - contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 - contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 - contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 - contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 - contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 - contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 - contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 - contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 - contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 - contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 - contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 - contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 - contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 - contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 - contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 - contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 - contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 - contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 - contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 - contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 - contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 - contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 - contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 - contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 -(55 rows) - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; - n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name -----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- - 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 - 1 | department | department_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric - 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 - 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar - 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 - 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 - 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 - 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 - 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | b | 2 | | YES | text | pg_catalog | text - 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 - 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 - 9 | limittest | y | 3 | | YES | text | pg_catalog | text - 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 - 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text - 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar - 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text - 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool - 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 - 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool - 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar - 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 - 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 - 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 - 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 - 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 - 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp - 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp - 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea - 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date - 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time - 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 - 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit - 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 - 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit - 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid - 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 - 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid - 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr - 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 - 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr - 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 - 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 - 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 - 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography - 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric - 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography - 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json - 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar - 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text - 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json - 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text - 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar - 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text - 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text - 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 - 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit - 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit - 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea - 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 - 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar - 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar - 39 | typetest | t | 4 | | YES | text | pg_catalog | text - 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp - 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp - 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text - 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar - 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text - 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text - 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text - 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text - 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text - 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea - 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date - 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text - 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar - 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 - 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json - 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 - 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 - 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar - 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 - 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea - 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea - 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 - 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea - 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 - 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea - 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 - 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea - 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea - 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea - 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 - 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text - 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 - 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 - 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text - 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text - 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry - 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar - 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text - 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb - 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 - 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date - 55 | ♂ | class | 6 | | YES | text | pg_catalog | text - 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar -(159 rows) - ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; - n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp -----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- - 1 | department | department_id | 1 | | | 64 | 2 | 0 | - 1 | department | department_name | 2 | | 1073741824 | | | | - 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | - 2 | employee | emp_name | 2 | | 1073741824 | | | | - 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | - 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | - 3 | empdata | emp_dat | 2 | | | | 10 | | - 4 | numbers | a | 1 | | | 64 | 2 | 0 | - 4 | numbers | b | 2 | 255 | 1020 | | | | - 5 | t | a | 1 | | | 64 | 2 | 0 | - 5 | t | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | - 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | - 7 | columntest | a a | 1 | | | 64 | 2 | 0 | - 7 | columntest | b b | 2 | | | 64 | 2 | 0 | - 7 | columntest | c c | 3 | | | 64 | 2 | 0 | - 8 | noprimary | a | 1 | | | 64 | 2 | 0 | - 8 | noprimary | b | 2 | | 1073741824 | | | | - 9 | limittest | id | 1 | | | 64 | 2 | 0 | - 9 | limittest | x | 2 | | | 64 | 2 | 0 | - 9 | limittest | y | 3 | | 1073741824 | | | | - 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | - 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c3 | 2 | | 1073741824 | | | | - 12 | case_exp | c6 | 3 | 10 | 40 | | | | - 13 | type_STRING | col | 1 | | 1073741824 | | | | - 14 | type_BOOLEANpk | col | 1 | | | | | | - 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | - 15 | type_BOOLEAN | b | 2 | | | | | | - 16 | type_BYTE | col | 1 | 1 | 4 | | | | - 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | - 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | - 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | - 20 | type_FLOAT | col | 1 | | | 53 | 2 | | - 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | - 22 | type_TIMESTAMP | col | 1 | | | | | | 6 - 22 | type_TIMESTAMP | b | 2 | | | | | | 6 - 23 | type_BLOB | col | 1 | | | | | | - 24 | type_DATE | col | 1 | | | | | | 0 - 25 | type_TIME | col | 1 | | | | | | 6 - 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | - 26 | type_BIT | b | 2 | 1 | | | | | - 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | - 27 | type_VARBIT | b | 2 | 1 | | | | | - 28 | type_UUIDpk | col | 1 | | | | | | - 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | - 29 | type_UUID | u | 2 | | | | | | - 30 | type_MACADDRpk | col | 1 | | | | | | - 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | - 31 | type_MACADDR | m | 2 | | | | | | - 32 | type_MACADDR8pk | col | 1 | | | | | | - 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | - 33 | type_MACADDR8 | m | 2 | | | | | | - 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | - 34 | types_PostGIS | gm | 2 | | | | | | - 34 | types_PostGIS | gg | 3 | | | | | | - 34 | types_PostGIS | r | 4 | | | | 10 | | - 34 | types_PostGIS | t | 5 | | 1073741824 | | | | - 34 | types_PostGIS | gm1 | 6 | | | | | | - 34 | types_PostGIS | gg1 | 7 | | | | | | - 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | - 35 | type_JSON | j | 2 | | | | | | - 35 | type_JSON | ot | 3 | 8 | 32 | | | | - 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | - 35 | type_JSON | q | 5 | | 1073741824 | | | | - 35 | type_JSON | j1 | 6 | | | | | | - 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | - 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | - 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | - 36 | type_JSONB | j | 2 | | | | | | - 36 | type_JSONB | ot | 3 | 8 | 32 | | | | - 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | - 36 | type_JSONB | q | 5 | | 1073741824 | | | | - 36 | type_JSONB | j1 | 6 | | | | | | - 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | - 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | - 37 | BitT | p | 1 | | | 64 | 2 | 0 | - 37 | BitT | a | 2 | 3 | | | | | - 37 | BitT | b | 3 | 5 | | | | | - 38 | notype | a | 1 | | | | | | - 39 | typetest | i | 1 | | | 64 | 2 | 0 | - 39 | typetest | v | 2 | 10 | 40 | | | | - 39 | typetest | c | 3 | 10 | 40 | | | | - 39 | typetest | t | 4 | | 1073741824 | | | | - 39 | typetest | d | 5 | | | | | | 6 - 39 | typetest | ti | 6 | | | | | | 6 - 40 | type_TEXT | col | 1 | | 1073741824 | | | | - 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | - 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | - 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | - 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | - 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | - 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | - 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | - 41 | alltypetest | c8 | 8 | 10 | 40 | | | | - 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | - 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | - 41 | alltypetest | c11 | 11 | | 1073741824 | | | | - 41 | alltypetest | c12 | 12 | | 1073741824 | | | | - 41 | alltypetest | c13 | 13 | | 1073741824 | | | | - 41 | alltypetest | c14 | 14 | | 1073741824 | | | | - 41 | alltypetest | c15 | 15 | | 1073741824 | | | | - 41 | alltypetest | c16 | 16 | | | | | | - 41 | alltypetest | c17 | 17 | | | 53 | 2 | | - 41 | alltypetest | c18 | 18 | | | 53 | 2 | | - 41 | alltypetest | c19 | 19 | | | 53 | 2 | | - 41 | alltypetest | c20 | 20 | | | 53 | 2 | | - 41 | alltypetest | c21 | 21 | | | | 10 | | - 41 | alltypetest | c22 | 22 | | | | 10 | | - 41 | alltypetest | c23 | 23 | | | | | | 0 - 41 | alltypetest | c24 | 24 | | | | | | 6 - 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | - 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | - 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | - 42 | json_osm_test | tags | 4 | | | | | | - 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | - 43 | shorty | id | 1 | | | 64 | 2 | 0 | - 43 | shorty | c | 2 | 10 | 40 | | | | - 44 | A a | col | 1 | | | 64 | 2 | 0 | - 45 | fts_table | name | 1 | | | | | | - 45 | fts_table | description | 2 | | | | | | - 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | - 46 | fts_table_data | block | 2 | | | | | | - 47 | fts_table_idx | segid | 1 | | | | | | - 47 | fts_table_idx | term | 2 | | | | | | - 47 | fts_table_idx | pgno | 3 | | | | | | - 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | - 48 | fts_table_content | c0 | 2 | | | | | | - 48 | fts_table_content | c1 | 3 | | | | | | - 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | - 49 | fts_table_docsize | sz | 2 | | | | | | - 50 | fts_table_config | k | 1 | | | | | | - 50 | fts_table_config | v | 2 | | | | | | - 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | - 51 | RO_RW_test | a | 2 | | 1073741824 | | | | - 51 | RO_RW_test | b | 3 | | | 53 | 2 | | - 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | - 52 | Unicode data | i | 1 | | 1073741824 | | | | - 52 | Unicode data | t | 2 | | 1073741824 | | | | - 53 | type_BOOLEAN_oper | i | 1 | | | | | | - 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | - 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | - 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | - 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | - 54 | ♁ | geom | 1 | | | | | | - 54 | ♁ | osm_type | 2 | 16 | 64 | | | | - 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | - 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | - 54 | ♁ | arr | 5 | | 1073741824 | | | | - 54 | ♁ | t | 6 | | | | | | - 55 | ♂ | id | 1 | | | 64 | 2 | 0 | - 55 | ♂ | UAI | 2 | 254 | 1016 | | | | - 55 | ♂ | ⌖ | 3 | | | | | | - 55 | ♂ | geom | 4 | | | | | | - 55 | ♂ | t₀ | 5 | | | | | | 0 - 55 | ♂ | class | 6 | | 1073741824 | | | | - 55 | ♂ | URL | 7 | 80 | 320 | | | | -(159 rows) - ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen -----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- - 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER - 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER - 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER - 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER - 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER - 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER - 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER - 5 | t | a | 1 | | | | 1 | NO | NO | NEVER - 5 | t | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER - 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER - 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER - 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER - 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER - 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER - 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER - 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER - 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER - 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER - 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER - 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER - 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER - 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER - 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER - 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER - 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER - 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER - 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER - 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER - 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER - 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER - 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER - 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER - 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER - 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER - 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER - 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER - 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER - 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER - 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER - 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER - 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER - 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER - 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER - 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER - 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER - 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER - 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER - 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER - 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER - 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER - 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER - 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER - 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER - 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER - 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER - 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER - 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER - 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER - 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER - 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER - 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER - 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER - 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER - 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER - 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER - 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER - 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER - 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER - 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER - 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER - 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER - 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER - 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER - 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER - 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER - 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER - 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER - 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER - 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER - 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER - 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER - 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER - 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER - 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER - 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER - 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER - 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER - 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER - 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER - 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER - 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER - 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER - 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER - 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER - 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER - 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER - 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER - 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER - 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER - 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER - 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER - 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER - 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER - 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER - 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER - 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER - 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER - 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER - 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER - 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER - 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER - 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER - 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER - 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER - 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER - 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER -(159 rows) - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - table_catalog | table_schema | table_name | column_name | option_name | option_value ---------------------+--------------+-------------------+---------------+-------------+-------------- - contrib_regression | public | department | department_id | key | true - contrib_regression | public | employee | emp_id | key | true - contrib_regression | public | empdata | emp_id | key | true - contrib_regression | public | numbers | a | key | true - contrib_regression | public | t | a | key | true - contrib_regression | public | multiprimary | b | key | true - contrib_regression | public | multiprimary | c | key | true - contrib_regression | public | columntest | a a | key | true - contrib_regression | public | columntest | b b | key | true - contrib_regression | public | limittest | id | key | true - contrib_regression | public | grem1_1 | a | key | true - contrib_regression | public | grem1_2 | a | key | true - contrib_regression | public | case_exp | c1 | key | true - contrib_regression | public | type_STRING | col | key | true - contrib_regression | public | type_BOOLEANpk | col | key | true - contrib_regression | public | type_BOOLEAN | i | key | true - contrib_regression | public | type_BYTE | col | key | true - contrib_regression | public | type_SINT | col | key | true - contrib_regression | public | type_BINT | col | key | true - contrib_regression | public | type_INTEGER | col | key | true - contrib_regression | public | type_FLOAT | col | key | true - contrib_regression | public | type_DOUBLE | col | key | true - contrib_regression | public | type_TIMESTAMP | col | key | true - contrib_regression | public | type_BLOB | col | key | true - contrib_regression | public | type_DATE | col | key | true - contrib_regression | public | type_TIME | col | key | true - contrib_regression | public | type_UUIDpk | col | key | true - contrib_regression | public | type_MACADDRpk | col | key | true - contrib_regression | public | type_MACADDR8pk | col | key | true - contrib_regression | public | BitT | p | key | true - contrib_regression | public | type_TEXT | col | key | true - contrib_regression | public | shorty | id | key | true - contrib_regression | public | A a | col | key | true - contrib_regression | public | fts_table_data | id | key | true - contrib_regression | public | fts_table_idx | segid | key | true - contrib_regression | public | fts_table_idx | term | key | true - contrib_regression | public | fts_table_content | id | key | true - contrib_regression | public | fts_table_docsize | id | key | true - contrib_regression | public | fts_table_config | k | key | true - contrib_regression | public | RO_RW_test | i | key | true - contrib_regression | public | Unicode data | i | key | true -(41 rows) - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/gis_ok/type.out b/expected/16.3/gis_ok/type.out deleted file mode 100644 index c5eccfaf..00000000 --- a/expected/16.3/gis_ok/type.out +++ /dev/null @@ -1,539 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col ---------------------------------------------- - [1,2,"foo",null] - {"bar":"baz","balance":7.77,"active":false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/libsqlite.out b/expected/16.3/libsqlite.out index 087bfd53..fe4fe2f8 100644 --- a/expected/16.3/libsqlite.out +++ b/expected/16.3/libsqlite.out @@ -22,9 +22,5 @@ SELECT sqlite_fdw_sqlite_code_source(); 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde (1 row) ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/sqlite_fdw.out b/expected/16.3/sqlite_fdw.out index 82c71abe..3342cd54 100644 --- a/expected/16.3/sqlite_fdw.out +++ b/expected/16.3/sqlite_fdw.out @@ -576,7 +576,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -590,7 +590,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; diff --git a/expected/16.3/types/bitstring.out b/expected/16.3/types/bitstring.out new file mode 100644 index 00000000..211ddf3e --- /dev/null +++ b/expected/16.3/types/bitstring.out @@ -0,0 +1,807 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 02: +CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); +--Testcase 03: +DROP FOREIGN TABLE IF EXISTS "type_BIT+"; +NOTICE: foreign table "type_BIT+" does not exist, skipping +--Testcase 04: +CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); +--Testcase 05: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 06: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 07: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); +ERROR: bit string length 1 does not match type bit(6) +--Testcase 08: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); +ERROR: bit string length 2 does not match type bit(6) +--Testcase 09: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); +ERROR: bit string length 3 does not match type bit(6) +--Testcase 10: +INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); +--Testcase 11: +INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); +--Testcase 12: +INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); +--Testcase 13: +INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); +--Testcase 14: type mismatch with proper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 15: +SELECT * FROM "type_BIT+"; + i | b | t | l | bi +---+--------+---------+---+---- + 6 | 110110 | integer | 2 | 54 + 7 | 111001 | integer | 2 | 57 + 8 | 110000 | integer | 2 | 48 + 9 | 100001 | integer | 2 | 33 +(4 rows) + +--Testcase 16: +SELECT * FROM "type_BIT" WHERE b < '110110'; + i | b +---+-------- + 8 | 110000 + 9 | 100001 +(2 rows) + +--Testcase 17: +SELECT * FROM "type_BIT" WHERE b > '110110'; + i | b +---+-------- + 7 | 111001 +(1 row) + +--Testcase 18: +SELECT * FROM "type_BIT" WHERE b = '110110'; + i | b +---+-------- + 6 | 110110 +(1 row) + +--Testcase 20: +CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); +--Testcase 21: +DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; +NOTICE: foreign table "type_VARBIT+" does not exist, skipping +--Testcase 22: +CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); +--Testcase 23: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); +--Testcase 24: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); +--Testcase 25: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); +--Testcase 26: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); +--Testcase 27: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); +--Testcase 28: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); +--Testcase 29: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); +--Testcase 30: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); +--Testcase 31: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); +--Testcase 32: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); +--Testcase 33: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); +--Testcase 34: +SELECT * FROM "type_VARBIT+"; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 6 | 110110 | integer | 2 + 7 | 111001 | integer | 2 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(11 rows) + +--Testcase 35: +SELECT * FROM "type_VARBIT+" WHERE b < '110110'; + i | b | t | l +---+--------+---------+--- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 +(7 rows) + +--Testcase 36: +SELECT * FROM "type_VARBIT+" WHERE b > '110110'; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 7 | 111001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(3 rows) + +--Testcase 37: +SELECT * FROM "type_VARBIT+" WHERE b = '110110'; + i | b | t | l +---+--------+---------+--- + 6 | 110110 | integer | 2 +(1 row) + +--Testcase 38: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); +--Testcase 39: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); +--Testcase 40: very long bit string, expected ERROR, 65 bits +INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); +ERROR: SQLite FDW dosens't support very long bit/varbit data +HINT: bit length 65, maximum 64 +--Testcase 41: +SELECT * FROM "type_VARBIT+" WHERE "i" > 10; + i | b | t | l +----+-----------------------------------------------------------------+---------+---- + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 +(3 rows) + +--Testcase 42: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 111111 + 6 | 110110 | 8 | 110000 | 110110 + 6 | 110110 | 9 | 100001 | 110111 + 7 | 111001 | 6 | 110110 | 111111 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 111001 + 7 | 111001 | 9 | 100001 | 111001 + 8 | 110000 | 6 | 110110 | 110110 + 8 | 110000 | 7 | 111001 | 111001 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 110001 + 9 | 100001 | 6 | 110110 | 110111 + 9 | 100001 | 7 | 111001 | 111001 + 9 | 100001 | 8 | 110000 | 110001 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 43: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 110000 + 6 | 110110 | 8 | 110000 | 110000 + 6 | 110110 | 9 | 100001 | 100000 + 7 | 111001 | 6 | 110110 | 110000 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 110000 + 7 | 111001 | 9 | 100001 | 100001 + 8 | 110000 | 6 | 110110 | 110000 + 8 | 110000 | 7 | 111001 | 110000 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 100000 + 9 | 100001 | 6 | 110110 | 100000 + 9 | 100001 | 7 | 111001 | 100001 + 9 | 100001 | 8 | 110000 | 100000 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 44: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 000000 + 6 | 110110 | 7 | 111001 | 001111 + 6 | 110110 | 8 | 110000 | 000110 + 6 | 110110 | 9 | 100001 | 010111 + 7 | 111001 | 6 | 110110 | 001111 + 7 | 111001 | 7 | 111001 | 000000 + 7 | 111001 | 8 | 110000 | 001001 + 7 | 111001 | 9 | 100001 | 011000 + 8 | 110000 | 6 | 110110 | 000110 + 8 | 110000 | 7 | 111001 | 001001 + 8 | 110000 | 8 | 110000 | 000000 + 8 | 110000 | 9 | 100001 | 010001 + 9 | 100001 | 6 | 110110 | 010111 + 9 | 100001 | 7 | 111001 | 011000 + 9 | 100001 | 8 | 110000 | 010001 + 9 | 100001 | 9 | 100001 | 000000 +(16 rows) + +--Testcase 45: +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 46: +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 47: +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 +(4 rows) + +--Testcase 48: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 49: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 50: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 51: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 52: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b << 3) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 53: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (~ b) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 54: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot OR bit strings of different sizes +--Testcase 55: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot AND bit strings of different sizes +--Testcase 56: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot XOR bit strings of different sizes +--Testcase 57: +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 001 + 5 | 101 | 001 + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 +(13 rows) + +--Testcase 58: +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 000 + 5 | 101 | 000 + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 +(13 rows) + +--Testcase 59: +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 01 + 3 | 11 | 00 + 4 | 100 | 011 + 5 | 101 | 010 + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 +(13 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 61: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 62: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 63: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 64: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" << 3) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 65: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, (~ (b)::"bit") + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 66: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 67: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 68: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 69: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 70: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 71: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 72: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 73: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 74: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 75: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 76: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 77: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 78: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 79: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 80: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 81: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 82: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 83: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 84: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 85: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 86: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 87: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 88: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 89: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 90: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 91: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 92: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 93: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 94: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 95: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 005: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BIT" +drop cascades to foreign table "type_BIT+" +drop cascades to foreign table "type_VARBIT" +drop cascades to foreign table "type_VARBIT+" diff --git a/expected/16.3/types/bool.out b/expected/16.3/types/bool.out new file mode 100644 index 00000000..92c66f7e --- /dev/null +++ b/expected/16.3/types/bool.out @@ -0,0 +1,1273 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 000: +CREATE EXTENSION sqlite_fdw; +--Testcase 001: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 01: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; +--Testcase 02: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); +--Testcase 03: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); +--Testcase 04: +CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); +--Testcase 05: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; +--Testcase 06: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); +--Testcase 07: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); +--Testcase 08: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); +--Testcase 09: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); +--Testcase 10: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); +--Testcase 11: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); +--Testcase 12: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); +--Testcase 13: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); +--Testcase 14: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); +--Testcase 15: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); +--Testcase 16: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); +--Testcase 17: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); +--Testcase 18: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); +--Testcase 19: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); +--Testcase 20: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); +--Testcase 21: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); +--Testcase 22: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); +--Testcase 23: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); +--Testcase 24: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); +--Testcase 25: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); +--Testcase 26: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); +--Testcase 27: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); +--Testcase 28: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); +--Testcase 29: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); +--Testcase 30: +SELECT * FROM "type_BOOLEAN"; + i | b +----+------- + 1 | 1 + 2 | 0 + 3 | true + 4 | false + 5 | true + 6 | false + 7 | Yes + 8 | YeS + 9 | yes + 10 | no + 11 | No + 12 | nO + 13 | off + 14 | oFf + 15 | on + 16 | ON + 17 | t + 18 | T + 19 | Y + 20 | y + 21 | F + 22 | f + 23 | x + 24 | 0 + 25 | 1 + 26 | +(26 rows) + +--Testcase 31: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 32: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN"; + QUERY PLAN +--------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN" + Output: i, b + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" +(3 rows) + +--Testcase 33: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN+"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" + Output: i, b, t, l + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 34: ERR - invalid text affinity because not ISO:SQL text input +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "text" affinity (1 bytes) : 'x' +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 35 +DELETE FROM "type_BOOLEAN" WHERE i = 23; +--Testcase 36: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 37: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; + i | b | t | l +----+---+------+--- + 26 | | null | +(1 row) + +--Testcase 38: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 +(24 rows) + +--Testcase 39: +SELECT * FROM "type_BOOLEAN+" WHERE b; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 3 | t | text | 4 + 5 | t | text | 4 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 25 | t | integer | 1 +(13 rows) + +--Testcase 40: +SELECT * FROM "type_BOOLEAN+" WHERE NOT b; + i | b | t | l +----+---+---------+--- + 2 | f | integer | 1 + 4 | f | text | 5 + 6 | f | text | 5 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 +(11 rows) + +--Testcase 41: +CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 42: +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +--Testcase 43: +INSERT INTO "type_BOOLEANpk" VALUES (FALSE); +--Testcase 44: ERR - primary key +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) +--Testcase 45: +DELETE FROM "type_BOOLEANpk"; +--Testcase 46: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; +--Testcase 47: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); +--Testcase 48: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 49: ERR - invalid float for bool column +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "real" affinity : 3.14159265358979 +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 50 +DELETE FROM "type_BOOLEAN" WHERE i = 27; +--Testcase 51: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 52: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE b; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 53: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 54: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE b; + QUERY PLAN +------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 55: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE NOT b; + QUERY PLAN +------------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 56: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" b + Output: i, b, t, l, (NOT b) + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 57: +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + i | b | t | l | nb +----+---+---------+---+---- + 1 | t | integer | 1 | f + 2 | f | integer | 1 | t + 3 | t | text | 4 | f + 4 | f | text | 5 | t + 5 | t | text | 4 | f + 6 | f | text | 5 | t + 7 | t | text | 3 | f + 8 | t | text | 3 | f + 9 | t | text | 3 | f + 10 | f | text | 2 | t + 11 | f | text | 2 | t + 12 | f | text | 2 | t + 13 | f | text | 3 | t + 14 | f | text | 3 | t + 15 | t | text | 2 | f + 16 | t | text | 2 | f + 17 | t | text | 1 | f + 18 | t | text | 1 | f + 19 | t | text | 1 | f + 20 | t | text | 1 | f + 21 | f | text | 1 | t + 22 | f | text | 1 | t + 24 | f | integer | 1 | t + 25 | t | integer | 1 | f + 26 | | null | | +(25 rows) + +--Testcase 58: +CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); +--Testcase 59: see INIT.SQL with mixed affinity boolean data +SELECT * FROM "type_BOOLEAN_oper"; + i | i1 | b1 | i2 | b2 +-----+----+----+----+---- + 1 | 1 | t | 1 | t + 2 | 1 | t | 2 | t + 3 | 1 | t | 3 | t + 4 | 1 | t | 4 | t + 5 | 1 | t | 5 | t + 6 | 1 | t | 6 | t + 7 | 1 | t | 7 | t + 8 | 1 | t | 8 | t + 9 | 1 | t | 9 | t + 10 | 1 | t | 10 | t + 11 | 1 | t | 11 | t + 12 | 1 | t | 12 | t + 13 | 1 | t | 13 | t + 14 | 1 | t | 14 | f + 15 | 1 | t | 15 | f + 16 | 1 | t | 16 | f + 17 | 1 | t | 17 | f + 18 | 1 | t | 18 | f + 19 | 1 | t | 19 | f + 20 | 1 | t | 20 | f + 21 | 1 | t | 21 | f + 22 | 1 | t | 22 | f + 23 | 1 | t | 23 | f + 24 | 1 | t | 24 | f + 25 | 1 | t | 25 | f + 26 | 1 | t | 26 | f + 27 | 1 | t | 27 | + 28 | 2 | t | 1 | t + 29 | 2 | t | 2 | t + 30 | 2 | t | 3 | t + 31 | 2 | t | 4 | t + 32 | 2 | t | 5 | t + 33 | 2 | t | 6 | t + 34 | 2 | t | 7 | t + 35 | 2 | t | 8 | t + 36 | 2 | t | 9 | t + 37 | 2 | t | 10 | t + 38 | 2 | t | 11 | t + 39 | 2 | t | 12 | t + 40 | 2 | t | 13 | t + 41 | 2 | t | 14 | f + 42 | 2 | t | 15 | f + 43 | 2 | t | 16 | f + 44 | 2 | t | 17 | f + 45 | 2 | t | 18 | f + 46 | 2 | t | 19 | f + 47 | 2 | t | 20 | f + 48 | 2 | t | 21 | f + 49 | 2 | t | 22 | f + 50 | 2 | t | 23 | f + 51 | 2 | t | 24 | f + 52 | 2 | t | 25 | f + 53 | 2 | t | 26 | f + 54 | 2 | t | 27 | + 55 | 3 | t | 1 | t + 56 | 3 | t | 2 | t + 57 | 3 | t | 3 | t + 58 | 3 | t | 4 | t + 59 | 3 | t | 5 | t + 60 | 3 | t | 6 | t + 61 | 3 | t | 7 | t + 62 | 3 | t | 8 | t + 63 | 3 | t | 9 | t + 64 | 3 | t | 10 | t + 65 | 3 | t | 11 | t + 66 | 3 | t | 12 | t + 67 | 3 | t | 13 | t + 68 | 3 | t | 14 | f + 69 | 3 | t | 15 | f + 70 | 3 | t | 16 | f + 71 | 3 | t | 17 | f + 72 | 3 | t | 18 | f + 73 | 3 | t | 19 | f + 74 | 3 | t | 20 | f + 75 | 3 | t | 21 | f + 76 | 3 | t | 22 | f + 77 | 3 | t | 23 | f + 78 | 3 | t | 24 | f + 79 | 3 | t | 25 | f + 80 | 3 | t | 26 | f + 81 | 3 | t | 27 | + 82 | 4 | t | 1 | t + 83 | 4 | t | 2 | t + 84 | 4 | t | 3 | t + 85 | 4 | t | 4 | t + 86 | 4 | t | 5 | t + 87 | 4 | t | 6 | t + 88 | 4 | t | 7 | t + 89 | 4 | t | 8 | t + 90 | 4 | t | 9 | t + 91 | 4 | t | 10 | t + 92 | 4 | t | 11 | t + 93 | 4 | t | 12 | t + 94 | 4 | t | 13 | t + 95 | 4 | t | 14 | f + 96 | 4 | t | 15 | f + 97 | 4 | t | 16 | f + 98 | 4 | t | 17 | f + 99 | 4 | t | 18 | f + 100 | 4 | t | 19 | f + 101 | 4 | t | 20 | f + 102 | 4 | t | 21 | f + 103 | 4 | t | 22 | f + 104 | 4 | t | 23 | f + 105 | 4 | t | 24 | f + 106 | 4 | t | 25 | f + 107 | 4 | t | 26 | f + 108 | 4 | t | 27 | + 109 | 5 | t | 1 | t + 110 | 5 | t | 2 | t + 111 | 5 | t | 3 | t + 112 | 5 | t | 4 | t + 113 | 5 | t | 5 | t + 114 | 5 | t | 6 | t + 115 | 5 | t | 7 | t + 116 | 5 | t | 8 | t + 117 | 5 | t | 9 | t + 118 | 5 | t | 10 | t + 119 | 5 | t | 11 | t + 120 | 5 | t | 12 | t + 121 | 5 | t | 13 | t + 122 | 5 | t | 14 | f + 123 | 5 | t | 15 | f + 124 | 5 | t | 16 | f + 125 | 5 | t | 17 | f + 126 | 5 | t | 18 | f + 127 | 5 | t | 19 | f + 128 | 5 | t | 20 | f + 129 | 5 | t | 21 | f + 130 | 5 | t | 22 | f + 131 | 5 | t | 23 | f + 132 | 5 | t | 24 | f + 133 | 5 | t | 25 | f + 134 | 5 | t | 26 | f + 135 | 5 | t | 27 | + 136 | 6 | t | 1 | t + 137 | 6 | t | 2 | t + 138 | 6 | t | 3 | t + 139 | 6 | t | 4 | t + 140 | 6 | t | 5 | t + 141 | 6 | t | 6 | t + 142 | 6 | t | 7 | t + 143 | 6 | t | 8 | t + 144 | 6 | t | 9 | t + 145 | 6 | t | 10 | t + 146 | 6 | t | 11 | t + 147 | 6 | t | 12 | t + 148 | 6 | t | 13 | t + 149 | 6 | t | 14 | f + 150 | 6 | t | 15 | f + 151 | 6 | t | 16 | f + 152 | 6 | t | 17 | f + 153 | 6 | t | 18 | f + 154 | 6 | t | 19 | f + 155 | 6 | t | 20 | f + 156 | 6 | t | 21 | f + 157 | 6 | t | 22 | f + 158 | 6 | t | 23 | f + 159 | 6 | t | 24 | f + 160 | 6 | t | 25 | f + 161 | 6 | t | 26 | f + 162 | 6 | t | 27 | + 163 | 7 | t | 1 | t + 164 | 7 | t | 2 | t + 165 | 7 | t | 3 | t + 166 | 7 | t | 4 | t + 167 | 7 | t | 5 | t + 168 | 7 | t | 6 | t + 169 | 7 | t | 7 | t + 170 | 7 | t | 8 | t + 171 | 7 | t | 9 | t + 172 | 7 | t | 10 | t + 173 | 7 | t | 11 | t + 174 | 7 | t | 12 | t + 175 | 7 | t | 13 | t + 176 | 7 | t | 14 | f + 177 | 7 | t | 15 | f + 178 | 7 | t | 16 | f + 179 | 7 | t | 17 | f + 180 | 7 | t | 18 | f + 181 | 7 | t | 19 | f + 182 | 7 | t | 20 | f + 183 | 7 | t | 21 | f + 184 | 7 | t | 22 | f + 185 | 7 | t | 23 | f + 186 | 7 | t | 24 | f + 187 | 7 | t | 25 | f + 188 | 7 | t | 26 | f + 189 | 7 | t | 27 | + 190 | 8 | t | 1 | t + 191 | 8 | t | 2 | t + 192 | 8 | t | 3 | t + 193 | 8 | t | 4 | t + 194 | 8 | t | 5 | t + 195 | 8 | t | 6 | t + 196 | 8 | t | 7 | t + 197 | 8 | t | 8 | t + 198 | 8 | t | 9 | t + 199 | 8 | t | 10 | t + 200 | 8 | t | 11 | t + 201 | 8 | t | 12 | t + 202 | 8 | t | 13 | t + 203 | 8 | t | 14 | f + 204 | 8 | t | 15 | f + 205 | 8 | t | 16 | f + 206 | 8 | t | 17 | f + 207 | 8 | t | 18 | f + 208 | 8 | t | 19 | f + 209 | 8 | t | 20 | f + 210 | 8 | t | 21 | f + 211 | 8 | t | 22 | f + 212 | 8 | t | 23 | f + 213 | 8 | t | 24 | f + 214 | 8 | t | 25 | f + 215 | 8 | t | 26 | f + 216 | 8 | t | 27 | + 217 | 9 | t | 1 | t + 218 | 9 | t | 2 | t + 219 | 9 | t | 3 | t + 220 | 9 | t | 4 | t + 221 | 9 | t | 5 | t + 222 | 9 | t | 6 | t + 223 | 9 | t | 7 | t + 224 | 9 | t | 8 | t + 225 | 9 | t | 9 | t + 226 | 9 | t | 10 | t + 227 | 9 | t | 11 | t + 228 | 9 | t | 12 | t + 229 | 9 | t | 13 | t + 230 | 9 | t | 14 | f + 231 | 9 | t | 15 | f + 232 | 9 | t | 16 | f + 233 | 9 | t | 17 | f + 234 | 9 | t | 18 | f + 235 | 9 | t | 19 | f + 236 | 9 | t | 20 | f + 237 | 9 | t | 21 | f + 238 | 9 | t | 22 | f + 239 | 9 | t | 23 | f + 240 | 9 | t | 24 | f + 241 | 9 | t | 25 | f + 242 | 9 | t | 26 | f + 243 | 9 | t | 27 | + 244 | 10 | t | 1 | t + 245 | 10 | t | 2 | t + 246 | 10 | t | 3 | t + 247 | 10 | t | 4 | t + 248 | 10 | t | 5 | t + 249 | 10 | t | 6 | t + 250 | 10 | t | 7 | t + 251 | 10 | t | 8 | t + 252 | 10 | t | 9 | t + 253 | 10 | t | 10 | t + 254 | 10 | t | 11 | t + 255 | 10 | t | 12 | t + 256 | 10 | t | 13 | t + 257 | 10 | t | 14 | f + 258 | 10 | t | 15 | f + 259 | 10 | t | 16 | f + 260 | 10 | t | 17 | f + 261 | 10 | t | 18 | f + 262 | 10 | t | 19 | f + 263 | 10 | t | 20 | f + 264 | 10 | t | 21 | f + 265 | 10 | t | 22 | f + 266 | 10 | t | 23 | f + 267 | 10 | t | 24 | f + 268 | 10 | t | 25 | f + 269 | 10 | t | 26 | f + 270 | 10 | t | 27 | + 271 | 11 | t | 1 | t + 272 | 11 | t | 2 | t + 273 | 11 | t | 3 | t + 274 | 11 | t | 4 | t + 275 | 11 | t | 5 | t + 276 | 11 | t | 6 | t + 277 | 11 | t | 7 | t + 278 | 11 | t | 8 | t + 279 | 11 | t | 9 | t + 280 | 11 | t | 10 | t + 281 | 11 | t | 11 | t + 282 | 11 | t | 12 | t + 283 | 11 | t | 13 | t + 284 | 11 | t | 14 | f + 285 | 11 | t | 15 | f + 286 | 11 | t | 16 | f + 287 | 11 | t | 17 | f + 288 | 11 | t | 18 | f + 289 | 11 | t | 19 | f + 290 | 11 | t | 20 | f + 291 | 11 | t | 21 | f + 292 | 11 | t | 22 | f + 293 | 11 | t | 23 | f + 294 | 11 | t | 24 | f + 295 | 11 | t | 25 | f + 296 | 11 | t | 26 | f + 297 | 11 | t | 27 | + 298 | 12 | t | 1 | t + 299 | 12 | t | 2 | t + 300 | 12 | t | 3 | t + 301 | 12 | t | 4 | t + 302 | 12 | t | 5 | t + 303 | 12 | t | 6 | t + 304 | 12 | t | 7 | t + 305 | 12 | t | 8 | t + 306 | 12 | t | 9 | t + 307 | 12 | t | 10 | t + 308 | 12 | t | 11 | t + 309 | 12 | t | 12 | t + 310 | 12 | t | 13 | t + 311 | 12 | t | 14 | f + 312 | 12 | t | 15 | f + 313 | 12 | t | 16 | f + 314 | 12 | t | 17 | f + 315 | 12 | t | 18 | f + 316 | 12 | t | 19 | f + 317 | 12 | t | 20 | f + 318 | 12 | t | 21 | f + 319 | 12 | t | 22 | f + 320 | 12 | t | 23 | f + 321 | 12 | t | 24 | f + 322 | 12 | t | 25 | f + 323 | 12 | t | 26 | f + 324 | 12 | t | 27 | + 325 | 13 | t | 1 | t + 326 | 13 | t | 2 | t + 327 | 13 | t | 3 | t + 328 | 13 | t | 4 | t + 329 | 13 | t | 5 | t + 330 | 13 | t | 6 | t + 331 | 13 | t | 7 | t + 332 | 13 | t | 8 | t + 333 | 13 | t | 9 | t + 334 | 13 | t | 10 | t + 335 | 13 | t | 11 | t + 336 | 13 | t | 12 | t + 337 | 13 | t | 13 | t + 338 | 13 | t | 14 | f + 339 | 13 | t | 15 | f + 340 | 13 | t | 16 | f + 341 | 13 | t | 17 | f + 342 | 13 | t | 18 | f + 343 | 13 | t | 19 | f + 344 | 13 | t | 20 | f + 345 | 13 | t | 21 | f + 346 | 13 | t | 22 | f + 347 | 13 | t | 23 | f + 348 | 13 | t | 24 | f + 349 | 13 | t | 25 | f + 350 | 13 | t | 26 | f + 351 | 13 | t | 27 | + 352 | 14 | f | 1 | t + 353 | 14 | f | 2 | t + 354 | 14 | f | 3 | t + 355 | 14 | f | 4 | t + 356 | 14 | f | 5 | t + 357 | 14 | f | 6 | t + 358 | 14 | f | 7 | t + 359 | 14 | f | 8 | t + 360 | 14 | f | 9 | t + 361 | 14 | f | 10 | t + 362 | 14 | f | 11 | t + 363 | 14 | f | 12 | t + 364 | 14 | f | 13 | t + 365 | 14 | f | 14 | f + 366 | 14 | f | 15 | f + 367 | 14 | f | 16 | f + 368 | 14 | f | 17 | f + 369 | 14 | f | 18 | f + 370 | 14 | f | 19 | f + 371 | 14 | f | 20 | f + 372 | 14 | f | 21 | f + 373 | 14 | f | 22 | f + 374 | 14 | f | 23 | f + 375 | 14 | f | 24 | f + 376 | 14 | f | 25 | f + 377 | 14 | f | 26 | f + 378 | 14 | f | 27 | + 379 | 15 | f | 1 | t + 380 | 15 | f | 2 | t + 381 | 15 | f | 3 | t + 382 | 15 | f | 4 | t + 383 | 15 | f | 5 | t + 384 | 15 | f | 6 | t + 385 | 15 | f | 7 | t + 386 | 15 | f | 8 | t + 387 | 15 | f | 9 | t + 388 | 15 | f | 10 | t + 389 | 15 | f | 11 | t + 390 | 15 | f | 12 | t + 391 | 15 | f | 13 | t + 392 | 15 | f | 14 | f + 393 | 15 | f | 15 | f + 394 | 15 | f | 16 | f + 395 | 15 | f | 17 | f + 396 | 15 | f | 18 | f + 397 | 15 | f | 19 | f + 398 | 15 | f | 20 | f + 399 | 15 | f | 21 | f + 400 | 15 | f | 22 | f + 401 | 15 | f | 23 | f + 402 | 15 | f | 24 | f + 403 | 15 | f | 25 | f + 404 | 15 | f | 26 | f + 405 | 15 | f | 27 | + 406 | 16 | f | 1 | t + 407 | 16 | f | 2 | t + 408 | 16 | f | 3 | t + 409 | 16 | f | 4 | t + 410 | 16 | f | 5 | t + 411 | 16 | f | 6 | t + 412 | 16 | f | 7 | t + 413 | 16 | f | 8 | t + 414 | 16 | f | 9 | t + 415 | 16 | f | 10 | t + 416 | 16 | f | 11 | t + 417 | 16 | f | 12 | t + 418 | 16 | f | 13 | t + 419 | 16 | f | 14 | f + 420 | 16 | f | 15 | f + 421 | 16 | f | 16 | f + 422 | 16 | f | 17 | f + 423 | 16 | f | 18 | f + 424 | 16 | f | 19 | f + 425 | 16 | f | 20 | f + 426 | 16 | f | 21 | f + 427 | 16 | f | 22 | f + 428 | 16 | f | 23 | f + 429 | 16 | f | 24 | f + 430 | 16 | f | 25 | f + 431 | 16 | f | 26 | f + 432 | 16 | f | 27 | + 433 | 17 | f | 1 | t + 434 | 17 | f | 2 | t + 435 | 17 | f | 3 | t + 436 | 17 | f | 4 | t + 437 | 17 | f | 5 | t + 438 | 17 | f | 6 | t + 439 | 17 | f | 7 | t + 440 | 17 | f | 8 | t + 441 | 17 | f | 9 | t + 442 | 17 | f | 10 | t + 443 | 17 | f | 11 | t + 444 | 17 | f | 12 | t + 445 | 17 | f | 13 | t + 446 | 17 | f | 14 | f + 447 | 17 | f | 15 | f + 448 | 17 | f | 16 | f + 449 | 17 | f | 17 | f + 450 | 17 | f | 18 | f + 451 | 17 | f | 19 | f + 452 | 17 | f | 20 | f + 453 | 17 | f | 21 | f + 454 | 17 | f | 22 | f + 455 | 17 | f | 23 | f + 456 | 17 | f | 24 | f + 457 | 17 | f | 25 | f + 458 | 17 | f | 26 | f + 459 | 17 | f | 27 | + 460 | 18 | f | 1 | t + 461 | 18 | f | 2 | t + 462 | 18 | f | 3 | t + 463 | 18 | f | 4 | t + 464 | 18 | f | 5 | t + 465 | 18 | f | 6 | t + 466 | 18 | f | 7 | t + 467 | 18 | f | 8 | t + 468 | 18 | f | 9 | t + 469 | 18 | f | 10 | t + 470 | 18 | f | 11 | t + 471 | 18 | f | 12 | t + 472 | 18 | f | 13 | t + 473 | 18 | f | 14 | f + 474 | 18 | f | 15 | f + 475 | 18 | f | 16 | f + 476 | 18 | f | 17 | f + 477 | 18 | f | 18 | f + 478 | 18 | f | 19 | f + 479 | 18 | f | 20 | f + 480 | 18 | f | 21 | f + 481 | 18 | f | 22 | f + 482 | 18 | f | 23 | f + 483 | 18 | f | 24 | f + 484 | 18 | f | 25 | f + 485 | 18 | f | 26 | f + 486 | 18 | f | 27 | + 487 | 19 | f | 1 | t + 488 | 19 | f | 2 | t + 489 | 19 | f | 3 | t + 490 | 19 | f | 4 | t + 491 | 19 | f | 5 | t + 492 | 19 | f | 6 | t + 493 | 19 | f | 7 | t + 494 | 19 | f | 8 | t + 495 | 19 | f | 9 | t + 496 | 19 | f | 10 | t + 497 | 19 | f | 11 | t + 498 | 19 | f | 12 | t + 499 | 19 | f | 13 | t + 500 | 19 | f | 14 | f + 501 | 19 | f | 15 | f + 502 | 19 | f | 16 | f + 503 | 19 | f | 17 | f + 504 | 19 | f | 18 | f + 505 | 19 | f | 19 | f + 506 | 19 | f | 20 | f + 507 | 19 | f | 21 | f + 508 | 19 | f | 22 | f + 509 | 19 | f | 23 | f + 510 | 19 | f | 24 | f + 511 | 19 | f | 25 | f + 512 | 19 | f | 26 | f + 513 | 19 | f | 27 | + 514 | 20 | f | 1 | t + 515 | 20 | f | 2 | t + 516 | 20 | f | 3 | t + 517 | 20 | f | 4 | t + 518 | 20 | f | 5 | t + 519 | 20 | f | 6 | t + 520 | 20 | f | 7 | t + 521 | 20 | f | 8 | t + 522 | 20 | f | 9 | t + 523 | 20 | f | 10 | t + 524 | 20 | f | 11 | t + 525 | 20 | f | 12 | t + 526 | 20 | f | 13 | t + 527 | 20 | f | 14 | f + 528 | 20 | f | 15 | f + 529 | 20 | f | 16 | f + 530 | 20 | f | 17 | f + 531 | 20 | f | 18 | f + 532 | 20 | f | 19 | f + 533 | 20 | f | 20 | f + 534 | 20 | f | 21 | f + 535 | 20 | f | 22 | f + 536 | 20 | f | 23 | f + 537 | 20 | f | 24 | f + 538 | 20 | f | 25 | f + 539 | 20 | f | 26 | f + 540 | 20 | f | 27 | + 541 | 21 | f | 1 | t + 542 | 21 | f | 2 | t + 543 | 21 | f | 3 | t + 544 | 21 | f | 4 | t + 545 | 21 | f | 5 | t + 546 | 21 | f | 6 | t + 547 | 21 | f | 7 | t + 548 | 21 | f | 8 | t + 549 | 21 | f | 9 | t + 550 | 21 | f | 10 | t + 551 | 21 | f | 11 | t + 552 | 21 | f | 12 | t + 553 | 21 | f | 13 | t + 554 | 21 | f | 14 | f + 555 | 21 | f | 15 | f + 556 | 21 | f | 16 | f + 557 | 21 | f | 17 | f + 558 | 21 | f | 18 | f + 559 | 21 | f | 19 | f + 560 | 21 | f | 20 | f + 561 | 21 | f | 21 | f + 562 | 21 | f | 22 | f + 563 | 21 | f | 23 | f + 564 | 21 | f | 24 | f + 565 | 21 | f | 25 | f + 566 | 21 | f | 26 | f + 567 | 21 | f | 27 | + 568 | 22 | f | 1 | t + 569 | 22 | f | 2 | t + 570 | 22 | f | 3 | t + 571 | 22 | f | 4 | t + 572 | 22 | f | 5 | t + 573 | 22 | f | 6 | t + 574 | 22 | f | 7 | t + 575 | 22 | f | 8 | t + 576 | 22 | f | 9 | t + 577 | 22 | f | 10 | t + 578 | 22 | f | 11 | t + 579 | 22 | f | 12 | t + 580 | 22 | f | 13 | t + 581 | 22 | f | 14 | f + 582 | 22 | f | 15 | f + 583 | 22 | f | 16 | f + 584 | 22 | f | 17 | f + 585 | 22 | f | 18 | f + 586 | 22 | f | 19 | f + 587 | 22 | f | 20 | f + 588 | 22 | f | 21 | f + 589 | 22 | f | 22 | f + 590 | 22 | f | 23 | f + 591 | 22 | f | 24 | f + 592 | 22 | f | 25 | f + 593 | 22 | f | 26 | f + 594 | 22 | f | 27 | + 595 | 23 | f | 1 | t + 596 | 23 | f | 2 | t + 597 | 23 | f | 3 | t + 598 | 23 | f | 4 | t + 599 | 23 | f | 5 | t + 600 | 23 | f | 6 | t + 601 | 23 | f | 7 | t + 602 | 23 | f | 8 | t + 603 | 23 | f | 9 | t + 604 | 23 | f | 10 | t + 605 | 23 | f | 11 | t + 606 | 23 | f | 12 | t + 607 | 23 | f | 13 | t + 608 | 23 | f | 14 | f + 609 | 23 | f | 15 | f + 610 | 23 | f | 16 | f + 611 | 23 | f | 17 | f + 612 | 23 | f | 18 | f + 613 | 23 | f | 19 | f + 614 | 23 | f | 20 | f + 615 | 23 | f | 21 | f + 616 | 23 | f | 22 | f + 617 | 23 | f | 23 | f + 618 | 23 | f | 24 | f + 619 | 23 | f | 25 | f + 620 | 23 | f | 26 | f + 621 | 23 | f | 27 | + 622 | 24 | f | 1 | t + 623 | 24 | f | 2 | t + 624 | 24 | f | 3 | t + 625 | 24 | f | 4 | t + 626 | 24 | f | 5 | t + 627 | 24 | f | 6 | t + 628 | 24 | f | 7 | t + 629 | 24 | f | 8 | t + 630 | 24 | f | 9 | t + 631 | 24 | f | 10 | t + 632 | 24 | f | 11 | t + 633 | 24 | f | 12 | t + 634 | 24 | f | 13 | t + 635 | 24 | f | 14 | f + 636 | 24 | f | 15 | f + 637 | 24 | f | 16 | f + 638 | 24 | f | 17 | f + 639 | 24 | f | 18 | f + 640 | 24 | f | 19 | f + 641 | 24 | f | 20 | f + 642 | 24 | f | 21 | f + 643 | 24 | f | 22 | f + 644 | 24 | f | 23 | f + 645 | 24 | f | 24 | f + 646 | 24 | f | 25 | f + 647 | 24 | f | 26 | f + 648 | 24 | f | 27 | + 649 | 25 | f | 1 | t + 650 | 25 | f | 2 | t + 651 | 25 | f | 3 | t + 652 | 25 | f | 4 | t + 653 | 25 | f | 5 | t + 654 | 25 | f | 6 | t + 655 | 25 | f | 7 | t + 656 | 25 | f | 8 | t + 657 | 25 | f | 9 | t + 658 | 25 | f | 10 | t + 659 | 25 | f | 11 | t + 660 | 25 | f | 12 | t + 661 | 25 | f | 13 | t + 662 | 25 | f | 14 | f + 663 | 25 | f | 15 | f + 664 | 25 | f | 16 | f + 665 | 25 | f | 17 | f + 666 | 25 | f | 18 | f + 667 | 25 | f | 19 | f + 668 | 25 | f | 20 | f + 669 | 25 | f | 21 | f + 670 | 25 | f | 22 | f + 671 | 25 | f | 23 | f + 672 | 25 | f | 24 | f + 673 | 25 | f | 25 | f + 674 | 25 | f | 26 | f + 675 | 25 | f | 27 | + 676 | 26 | f | 1 | t + 677 | 26 | f | 2 | t + 678 | 26 | f | 3 | t + 679 | 26 | f | 4 | t + 680 | 26 | f | 5 | t + 681 | 26 | f | 6 | t + 682 | 26 | f | 7 | t + 683 | 26 | f | 8 | t + 684 | 26 | f | 9 | t + 685 | 26 | f | 10 | t + 686 | 26 | f | 11 | t + 687 | 26 | f | 12 | t + 688 | 26 | f | 13 | t + 689 | 26 | f | 14 | f + 690 | 26 | f | 15 | f + 691 | 26 | f | 16 | f + 692 | 26 | f | 17 | f + 693 | 26 | f | 18 | f + 694 | 26 | f | 19 | f + 695 | 26 | f | 20 | f + 696 | 26 | f | 21 | f + 697 | 26 | f | 22 | f + 698 | 26 | f | 23 | f + 699 | 26 | f | 24 | f + 700 | 26 | f | 25 | f + 701 | 26 | f | 26 | f + 702 | 26 | f | 27 | + 703 | 27 | | 1 | t + 704 | 27 | | 2 | t + 705 | 27 | | 3 | t + 706 | 27 | | 4 | t + 707 | 27 | | 5 | t + 708 | 27 | | 6 | t + 709 | 27 | | 7 | t + 710 | 27 | | 8 | t + 711 | 27 | | 9 | t + 712 | 27 | | 10 | t + 713 | 27 | | 11 | t + 714 | 27 | | 12 | t + 715 | 27 | | 13 | t + 716 | 27 | | 14 | f + 717 | 27 | | 15 | f + 718 | 27 | | 16 | f + 719 | 27 | | 17 | f + 720 | 27 | | 18 | f + 721 | 27 | | 19 | f + 722 | 27 | | 20 | f + 723 | 27 | | 21 | f + 724 | 27 | | 22 | f + 725 | 27 | | 23 | f + 726 | 27 | | 24 | f + 727 | 27 | | 25 | f + 728 | 27 | | 26 | f + 729 | 27 | | 27 | +(729 rows) + +--Testcase 60: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 61: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + b1 | b2 | a | o +----+----+---+--- + f | f | f | f + f | t | f | t + f | | f | + t | f | f | t + t | t | t | t + t | | | t + | f | f | + | t | | t + | | | +(9 rows) + +--Testcase 62: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 63: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + b1 | b2 | a | o +----+----+---+--- + t | t | t | t +(1 row) + +--Testcase 64: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 65: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + b1 | b2 | a | o +----+----+---+--- + f | t | f | t + t | f | f | t + t | t | t | t + t | | | t + | t | | t +(5 rows) + +--Testcase 66: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) +(3 rows) + +--Testcase 67: +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; +--Testcase 68: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + t | f + t | t + t | + | f + | t + | +(6 rows) + +--Testcase 69: +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; +--Testcase 70: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) +(3 rows) + +--Testcase 71: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | t + f | + | f + | +(5 rows) + +--Testcase 72: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Delete on public."type_BOOLEAN_oper" + -> Foreign Delete on public."type_BOOLEAN_oper" + SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) +(3 rows) + +--Testcase 73: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; +--Testcase 74: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | + | f + | +(4 rows) + +--Testcase 75: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; +--Testcase 76: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 77: +DELETE FROM "type_BOOLEAN_oper" WHERE b2; +--Testcase 78: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 79: +DELETE FROM "type_BOOLEAN"; +--Testcase 003: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BOOLEAN" +drop cascades to foreign table "type_BOOLEAN+" +drop cascades to foreign table "type_BOOLEANpk" +drop cascades to foreign table "type_BOOLEAN_oper" diff --git a/expected/16.3/types/macaddr.out b/expected/16.3/types/macaddr.out new file mode 100644 index 00000000..c87381b4 --- /dev/null +++ b/expected/16.3/types/macaddr.out @@ -0,0 +1,954 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); +--Testcase 012: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); +--Testcase 013: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); +--Testcase 014: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); +--Testcase 015: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); +--Testcase 016: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); +--Testcase 017: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); +--Testcase 018: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); +--Testcase 019: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); +--Testcase 020: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); +--Testcase 021: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); +--Testcase 022: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); +--Testcase 023: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); +--Testcase 024: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; +--Testcase 029: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); +--Testcase 030: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); +--Testcase 031: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); +--Testcase 032: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); +--Testcase 033: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); +--Testcase 034: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); +--Testcase 035: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); +--Testcase 036: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); +--Testcase 037: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); +--Testcase 038: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); +--Testcase 039: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); +--Testcase 040: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); +--Testcase 041: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); +--Testcase 042: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); +--Testcase 046: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); +--Testcase 047: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); +--Testcase 048: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); +--Testcase 049: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); +--Testcase 050: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); +--Testcase 051: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); +--Testcase 052: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); +--Testcase 053: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); +--Testcase 054: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); +--Testcase 055: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); +--Testcase 056: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); +--Testcase 057: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); +--Testcase 058: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); +--Testcase 062: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); +--Testcase 063: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); +--Testcase 064: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); +--Testcase 065: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); +--Testcase 066: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); +--Testcase 067: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); +--Testcase 068: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); +--Testcase 069: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); +--Testcase 070: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); +--Testcase 071: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); +--Testcase 072: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); +--Testcase 073: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); +--Testcase 074: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); +--Testcase 077: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); +--Testcase 108: +SELECT * FROM "type_MACADDR+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------+------+----+------------------- + 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; + i | m +----+------------------- + 63 | 00:00:00:00:00:01 + 64 | 00:00:00:00:00:02 + 65 | 00:00:00:00:00:03 + 66 | 00:00:01:00:00:00 + 67 | 00:00:02:00:00:00 + 68 | 00:00:03:00:00:00 + 60 | 01:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 62 | 03:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; + i | m +----+------------------- + 62 | 03:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 60 | 01:00:00:00:00:00 + 68 | 00:00:03:00:00:00 + 67 | 00:00:02:00:00:00 + 66 | 00:00:01:00:00:00 + 65 | 00:00:00:00:00:03 + 64 | 00:00:00:00:00:02 + 63 | 00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDRpk"; + col +------------------- + 01:02:03:04:05:06 + 01:02:03:04:05:06 + 01:02:03:04:05:06 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDRpk"; +--no macaddr operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m | '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m & '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m > '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m < '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m = '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m >= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <> '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR" +drop cascades to foreign table "type_MACADDR+" +drop cascades to foreign table "type_MACADDRpk" diff --git a/expected/16.3/types/macaddr8.out b/expected/16.3/types/macaddr8.out new file mode 100644 index 00000000..4d9ea111 --- /dev/null +++ b/expected/16.3/types/macaddr8.out @@ -0,0 +1,955 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); +--Testcase 012: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); +--Testcase 013: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); +--Testcase 014: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); +--Testcase 015: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); +--Testcase 016: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); +--Testcase 017: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); +--Testcase 018: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); +--Testcase 019: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); +--Testcase 020: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); +--Testcase 021: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); +--Testcase 022: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); +--Testcase 023: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); +--Testcase 024: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; +--Testcase 029: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); +--Testcase 030: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); +--Testcase 031: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); +--Testcase 032: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); +--Testcase 033: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); +--Testcase 034: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); +--Testcase 035: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); +--Testcase 036: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); +--Testcase 037: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); +--Testcase 038: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); +--Testcase 039: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); +--Testcase 040: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); +--Testcase 041: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); +--Testcase 042: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); +--Testcase 046: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); +--Testcase 047: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); +--Testcase 048: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); +--Testcase 049: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); +--Testcase 050: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); +--Testcase 051: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); +--Testcase 052: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); +--Testcase 053: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); +--Testcase 054: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); +--Testcase 055: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); +--Testcase 056: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); +--Testcase 057: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); +--Testcase 058: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); +--Testcase 062: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); +--Testcase 063: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); +--Testcase 064: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); +--Testcase 065: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); +--Testcase 066: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); +--Testcase 067: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); +--Testcase 068: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); +--Testcase 069: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); +--Testcase 070: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); +--Testcase 071: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); +--Testcase 072: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); +--Testcase 073: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); +--Testcase 074: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); +--Testcase 077: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); +--Testcase 108: +SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------------+------+----+------------------------- + 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR8"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; + i | m +----+------------------------- + 63 | 00:00:00:00:00:00:00:01 + 64 | 00:00:00:00:00:00:00:02 + 65 | 00:00:00:00:00:00:00:03 + 66 | 00:00:00:00:01:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 62 | 03:00:00:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; + i | m +----+------------------------- + 62 | 03:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 66 | 00:00:00:00:01:00:00:00 + 65 | 00:00:00:00:00:00:00:03 + 64 | 00:00:00:00:00:00:00:02 + 63 | 00:00:00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +ERROR: option "column_type" provided more than once +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDR8pk"; + col +------------------------- + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDR8pk"; +--no macaddr8 operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR8" +drop cascades to foreign table "type_MACADDR8+" +drop cascades to foreign table "type_MACADDR8pk" diff --git a/expected/16.3/types/uuid.out b/expected/16.3/types/uuid.out new file mode 100644 index 00000000..2ccbb635 --- /dev/null +++ b/expected/16.3/types/uuid.out @@ -0,0 +1,548 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); +--Testcase 010: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; +--Testcase 011: +INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 012: +INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 013: +INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 014: +INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 015: +INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 016: +INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 017: +INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 018: +INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 019: +INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 020: +INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 021: +INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 022: +INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 023: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 024: +INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 025: +INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 026: +INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 027: +INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 029: +INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 030: +INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 031: +INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 032: +INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 033: +INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 034: +INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 035: +INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 036: +INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 037: +INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 038: +INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 039: +INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 040: +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 041: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 042: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); +--Testcase 043: +INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 044: +INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 045: +INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 046: +INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 047: +INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 048: +INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 049: +INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 050: +INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 051: +INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 052: +INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 053: +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 054: +INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 056: +CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); +--Testcase 057: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(40 rows) + +--Testcase 058: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 059: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 060: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 061: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 062: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 063: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 064: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 065: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 066: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 067: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; +--Testcase 068: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) +(3 rows) + +--Testcase 069: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) +(3 rows) + +--Testcase 071: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 072: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; +--Testcase 073: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) +(3 rows) + +--Testcase 074: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(21 rows) + +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; +--Testcase 076: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 +(1 row) + +--Testcase 077: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 077: +SELECT * FROM "type_UUID+"; + i | u | t | l +---+---+---+--- +(0 rows) + +--Testcase 078: +INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); +--Testcase 079: +SELECT * FROM "type_UUID+" WHERE "i" = 41; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 +(1 row) + +--Testcase 080: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; +--Testcase 081: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 082: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 083: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) +(3 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 086: +INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); +--Testcase 087: +INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); +--Testcase 088: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 089: +SELECT * FROM "type_UUID+" WHERE "i" = 42; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 090: +SELECT * FROM "type_UUID+" WHERE "i" = 43; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 091: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); + QUERY PLAN +---------------------------------------------------------------------------- + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) +(3 rows) + +--Testcase 092: +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); +--Testcase 093: +INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); +--Testcase 094: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 + 44 | | null | +(2 rows) + +--Testcase 095: +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + i | u | t | l +----+---+------+--- + 44 | | null | +(1 row) + +--Testcase 096: +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) +(3 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) +(3 rows) + +--Testcase 100: +CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 101: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); +--Testcase 102: +INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 103: +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 104: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(2 rows) + +--Testcase 105: ERR - primary key +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) +--Testcase 106: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 107: NO ERR, but the same semantics! +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 108: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(3 rows) + +--Testcase 109: +DELETE FROM "type_UUIDpk"; +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_UUID" +drop cascades to foreign table "type_UUID+" +drop cascades to foreign table "type_UUIDpk" diff --git a/expected/16.3/with_gis_support/auto_import.out b/expected/16.3/with_gis_support/auto_import.out new file mode 100644 index 00000000..4c399770 --- /dev/null +++ b/expected/16.3/with_gis_support/auto_import.out @@ -0,0 +1,636 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/types/postgis.out b/expected/16.3/with_gis_support/postgis.out similarity index 99% rename from expected/16.3/types/postgis.out rename to expected/16.3/with_gis_support/postgis.out index 6fa60f26..6ce3d2b7 100644 --- a/expected/16.3/types/postgis.out +++ b/expected/16.3/with_gis_support/postgis.out @@ -4,7 +4,8 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; +NOTICE: extension "postgis" already exists, skipping --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/expected/16.3/with_gis_support/type.out b/expected/16.3/with_gis_support/type.out new file mode 100644 index 00000000..ab47b70c --- /dev/null +++ b/expected/16.3/with_gis_support/type.out @@ -0,0 +1,535 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/without_gis_support/auto_import.out b/expected/16.3/without_gis_support/auto_import.out new file mode 100644 index 00000000..4c399770 --- /dev/null +++ b/expected/16.3/without_gis_support/auto_import.out @@ -0,0 +1,636 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/16.3/types/nogis.out b/expected/16.3/without_gis_support/nogis.out similarity index 100% rename from expected/16.3/types/nogis.out rename to expected/16.3/without_gis_support/nogis.out diff --git a/expected/16.3/without_gis_support/type.out b/expected/16.3/without_gis_support/type.out new file mode 100644 index 00000000..ab47b70c --- /dev/null +++ b/expected/16.3/without_gis_support/type.out @@ -0,0 +1,535 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/extra/insert.out b/expected/17.0/extra/insert.out index 38906b15..210615ac 100644 --- a/expected/17.0/extra/insert.out +++ b/expected/17.0/extra/insert.out @@ -11,7 +11,7 @@ CREATE FOREIGN TABLE inserttest01 (col1 int4, col2 int4 NOT NULL, col3 text defa --Testcase 1: insert into inserttest01 (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); ERROR: Failed to execute remote SQL -HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite result code 1299 +HINT: SQLite error 'NOT NULL constraint failed: inserttest01.col2', SQLite primary result code 19, extended result code 1299 CONTEXT: SQL query: INSERT INTO main."inserttest01"(`col1`, `col2`, `col3`) VALUES (?, ?, ?) --Testcase 2: insert into inserttest01 (col2, col3) values (3, DEFAULT); diff --git a/expected/17.0/extra/sqlite_fdw_post.out b/expected/17.0/extra/sqlite_fdw_post.out index 87f241c7..347bbb3e 100644 --- a/expected/17.0/extra/sqlite_fdw_post.out +++ b/expected/17.0/extra/sqlite_fdw_post.out @@ -7277,7 +7277,7 @@ ALTER FOREIGN TABLE ft1_constraint RENAME TO ft1; --Testcase 319: INSERT INTO ft1(c1, c2) VALUES(11, 12); -- duplicate key ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite result code 1555 +HINT: SQLite error 'UNIQUE constraint failed: t1_constraint.c1', SQLite primary result code 19, extended result code 1555 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 320: INSERT INTO ft1(c1, c2) VALUES(11, 12) ON CONFLICT (c1, c2) DO NOTHING; -- unsupported @@ -7288,12 +7288,12 @@ ERROR: there is no unique or exclusion constraint matching the ON CONFLICT spec --Testcase 743: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 744: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 750: ALTER FOREIGN TABLE ft1 RENAME TO ft1_constraint; @@ -7761,12 +7761,12 @@ RESET constraint_exclusion; --Testcase 745: INSERT INTO ft1(c1, c2) VALUES(1111, -2); -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: INSERT INTO main."t1_constraint"(`c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) --Testcase 746: UPDATE ft1 SET c2 = -c2 WHERE c1 = 1; -- c2positive ERROR: Failed to execute remote SQL -HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite result code 275 +HINT: SQLite error 'CHECK constraint failed: c2 >= 0', SQLite primary result code 19, extended result code 275 CONTEXT: SQL query: UPDATE main."t1_constraint" SET `c2` = (- `c2`) WHERE ((`c1` = 1)) --Testcase 817: ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2positive; diff --git a/expected/17.0/gis_no/auto_import.out b/expected/17.0/gis_no/auto_import.out deleted file mode 100644 index c293b864..00000000 --- a/expected/17.0/gis_no/auto_import.out +++ /dev/null @@ -1,638 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n ------------------------+----------------------+--------------------+------------------------+---------------------+---- - contrib_regression | public | department | contrib_regression | sqlite_svr | 1 - contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 - contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 - contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 - contrib_regression | public | t | contrib_regression | sqlite_svr | 5 - contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 - contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 - contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 - contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 - contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 - contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 - contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 - contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 - contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 - contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 - contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 - contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 - contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 - contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 - contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 - contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 - contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 - contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 - contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 - contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 - contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 - contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 - contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 - contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 - contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 - contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 - contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 - contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 - contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 - contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 - contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 - contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 - contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 - contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 - contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 - contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 - contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 - contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 - contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 - contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 - contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 - contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 - contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 - contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 - contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 - contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 - contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 - contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 - contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 - contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 -(55 rows) - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; - n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name -----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- - 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 - 1 | department | department_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric - 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 - 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar - 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 - 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 - 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 - 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 - 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | b | 2 | | YES | text | pg_catalog | text - 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 - 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 - 9 | limittest | y | 3 | | YES | text | pg_catalog | text - 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 - 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text - 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar - 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text - 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool - 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 - 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool - 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar - 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 - 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 - 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 - 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 - 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 - 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp - 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp - 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea - 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date - 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time - 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 - 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit - 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 - 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit - 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid - 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 - 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid - 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr - 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 - 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr - 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 - 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 - 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 - 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric - 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea - 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json - 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar - 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text - 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json - 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text - 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar - 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text - 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text - 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 - 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit - 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit - 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea - 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 - 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar - 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar - 39 | typetest | t | 4 | | YES | text | pg_catalog | text - 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp - 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp - 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text - 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar - 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text - 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text - 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text - 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text - 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text - 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea - 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date - 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text - 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar - 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 - 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json - 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 - 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 - 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar - 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 - 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea - 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea - 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 - 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea - 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 - 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea - 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 - 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea - 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea - 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea - 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 - 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text - 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 - 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 - 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text - 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text - 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea - 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar - 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text - 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb - 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 - 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date - 55 | ♂ | class | 6 | | YES | text | pg_catalog | text - 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar -(159 rows) - ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; - n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp -----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- - 1 | department | department_id | 1 | | | 64 | 2 | 0 | - 1 | department | department_name | 2 | | 1073741824 | | | | - 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | - 2 | employee | emp_name | 2 | | 1073741824 | | | | - 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | - 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | - 3 | empdata | emp_dat | 2 | | | | 10 | | - 4 | numbers | a | 1 | | | 64 | 2 | 0 | - 4 | numbers | b | 2 | 255 | 1020 | | | | - 5 | t | a | 1 | | | 64 | 2 | 0 | - 5 | t | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | - 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | - 7 | columntest | a a | 1 | | | 64 | 2 | 0 | - 7 | columntest | b b | 2 | | | 64 | 2 | 0 | - 7 | columntest | c c | 3 | | | 64 | 2 | 0 | - 8 | noprimary | a | 1 | | | 64 | 2 | 0 | - 8 | noprimary | b | 2 | | 1073741824 | | | | - 9 | limittest | id | 1 | | | 64 | 2 | 0 | - 9 | limittest | x | 2 | | | 64 | 2 | 0 | - 9 | limittest | y | 3 | | 1073741824 | | | | - 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | - 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c3 | 2 | | 1073741824 | | | | - 12 | case_exp | c6 | 3 | 10 | 40 | | | | - 13 | type_STRING | col | 1 | | 1073741824 | | | | - 14 | type_BOOLEANpk | col | 1 | | | | | | - 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | - 15 | type_BOOLEAN | b | 2 | | | | | | - 16 | type_BYTE | col | 1 | 1 | 4 | | | | - 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | - 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | - 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | - 20 | type_FLOAT | col | 1 | | | 53 | 2 | | - 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | - 22 | type_TIMESTAMP | col | 1 | | | | | | 6 - 22 | type_TIMESTAMP | b | 2 | | | | | | 6 - 23 | type_BLOB | col | 1 | | | | | | - 24 | type_DATE | col | 1 | | | | | | 0 - 25 | type_TIME | col | 1 | | | | | | 6 - 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | - 26 | type_BIT | b | 2 | 1 | | | | | - 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | - 27 | type_VARBIT | b | 2 | 1 | | | | | - 28 | type_UUIDpk | col | 1 | | | | | | - 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | - 29 | type_UUID | u | 2 | | | | | | - 30 | type_MACADDRpk | col | 1 | | | | | | - 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | - 31 | type_MACADDR | m | 2 | | | | | | - 32 | type_MACADDR8pk | col | 1 | | | | | | - 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | - 33 | type_MACADDR8 | m | 2 | | | | | | - 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | - 34 | types_PostGIS | gm | 2 | | | | | | - 34 | types_PostGIS | gg | 3 | | | | | | - 34 | types_PostGIS | r | 4 | | | | 10 | | - 34 | types_PostGIS | t | 5 | | 1073741824 | | | | - 34 | types_PostGIS | gm1 | 6 | | | | | | - 34 | types_PostGIS | gg1 | 7 | | | | | | - 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | - 35 | type_JSON | j | 2 | | | | | | - 35 | type_JSON | ot | 3 | 8 | 32 | | | | - 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | - 35 | type_JSON | q | 5 | | 1073741824 | | | | - 35 | type_JSON | j1 | 6 | | | | | | - 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | - 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | - 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | - 36 | type_JSONB | j | 2 | | | | | | - 36 | type_JSONB | ot | 3 | 8 | 32 | | | | - 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | - 36 | type_JSONB | q | 5 | | 1073741824 | | | | - 36 | type_JSONB | j1 | 6 | | | | | | - 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | - 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | - 37 | BitT | p | 1 | | | 64 | 2 | 0 | - 37 | BitT | a | 2 | 3 | | | | | - 37 | BitT | b | 3 | 5 | | | | | - 38 | notype | a | 1 | | | | | | - 39 | typetest | i | 1 | | | 64 | 2 | 0 | - 39 | typetest | v | 2 | 10 | 40 | | | | - 39 | typetest | c | 3 | 10 | 40 | | | | - 39 | typetest | t | 4 | | 1073741824 | | | | - 39 | typetest | d | 5 | | | | | | 6 - 39 | typetest | ti | 6 | | | | | | 6 - 40 | type_TEXT | col | 1 | | 1073741824 | | | | - 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | - 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | - 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | - 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | - 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | - 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | - 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | - 41 | alltypetest | c8 | 8 | 10 | 40 | | | | - 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | - 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | - 41 | alltypetest | c11 | 11 | | 1073741824 | | | | - 41 | alltypetest | c12 | 12 | | 1073741824 | | | | - 41 | alltypetest | c13 | 13 | | 1073741824 | | | | - 41 | alltypetest | c14 | 14 | | 1073741824 | | | | - 41 | alltypetest | c15 | 15 | | 1073741824 | | | | - 41 | alltypetest | c16 | 16 | | | | | | - 41 | alltypetest | c17 | 17 | | | 53 | 2 | | - 41 | alltypetest | c18 | 18 | | | 53 | 2 | | - 41 | alltypetest | c19 | 19 | | | 53 | 2 | | - 41 | alltypetest | c20 | 20 | | | 53 | 2 | | - 41 | alltypetest | c21 | 21 | | | | 10 | | - 41 | alltypetest | c22 | 22 | | | | 10 | | - 41 | alltypetest | c23 | 23 | | | | | | 0 - 41 | alltypetest | c24 | 24 | | | | | | 6 - 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | - 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | - 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | - 42 | json_osm_test | tags | 4 | | | | | | - 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | - 43 | shorty | id | 1 | | | 64 | 2 | 0 | - 43 | shorty | c | 2 | 10 | 40 | | | | - 44 | A a | col | 1 | | | 64 | 2 | 0 | - 45 | fts_table | name | 1 | | | | | | - 45 | fts_table | description | 2 | | | | | | - 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | - 46 | fts_table_data | block | 2 | | | | | | - 47 | fts_table_idx | segid | 1 | | | | | | - 47 | fts_table_idx | term | 2 | | | | | | - 47 | fts_table_idx | pgno | 3 | | | | | | - 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | - 48 | fts_table_content | c0 | 2 | | | | | | - 48 | fts_table_content | c1 | 3 | | | | | | - 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | - 49 | fts_table_docsize | sz | 2 | | | | | | - 50 | fts_table_config | k | 1 | | | | | | - 50 | fts_table_config | v | 2 | | | | | | - 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | - 51 | RO_RW_test | a | 2 | | 1073741824 | | | | - 51 | RO_RW_test | b | 3 | | | 53 | 2 | | - 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | - 52 | Unicode data | i | 1 | | 1073741824 | | | | - 52 | Unicode data | t | 2 | | 1073741824 | | | | - 53 | type_BOOLEAN_oper | i | 1 | | | | | | - 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | - 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | - 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | - 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | - 54 | ♁ | geom | 1 | | | | | | - 54 | ♁ | osm_type | 2 | 16 | 64 | | | | - 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | - 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | - 54 | ♁ | arr | 5 | | 1073741824 | | | | - 54 | ♁ | t | 6 | | | | | | - 55 | ♂ | id | 1 | | | 64 | 2 | 0 | - 55 | ♂ | UAI | 2 | 254 | 1016 | | | | - 55 | ♂ | ⌖ | 3 | | | | | | - 55 | ♂ | geom | 4 | | | | | | - 55 | ♂ | t₀ | 5 | | | | | | 0 - 55 | ♂ | class | 6 | | 1073741824 | | | | - 55 | ♂ | URL | 7 | 80 | 320 | | | | -(159 rows) - ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen -----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- - 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER - 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER - 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER - 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER - 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER - 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER - 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER - 5 | t | a | 1 | | | | 1 | NO | NO | NEVER - 5 | t | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER - 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER - 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER - 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER - 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER - 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER - 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER - 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER - 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER - 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER - 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER - 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER - 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER - 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER - 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER - 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER - 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER - 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER - 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER - 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER - 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER - 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER - 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER - 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER - 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER - 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER - 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER - 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER - 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER - 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER - 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER - 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER - 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER - 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER - 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER - 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER - 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER - 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER - 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER - 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER - 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER - 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER - 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER - 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER - 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER - 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER - 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER - 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER - 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER - 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER - 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER - 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER - 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER - 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER - 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER - 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER - 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER - 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER - 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER - 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER - 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER - 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER - 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER - 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER - 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER - 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER - 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER - 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER - 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER - 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER - 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER - 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER - 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER - 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER - 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER - 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER - 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER - 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER - 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER - 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER - 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER - 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER - 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER - 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER - 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER - 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER - 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER - 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER - 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER - 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER - 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER - 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER - 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER - 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER - 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER - 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER - 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER - 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER - 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER - 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER - 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER - 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER - 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER - 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER - 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER - 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER - 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER - 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER -(159 rows) - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - table_catalog | table_schema | table_name | column_name | option_name | option_value ---------------------+--------------+-------------------+---------------+-------------+-------------- - contrib_regression | public | department | department_id | key | true - contrib_regression | public | employee | emp_id | key | true - contrib_regression | public | empdata | emp_id | key | true - contrib_regression | public | numbers | a | key | true - contrib_regression | public | t | a | key | true - contrib_regression | public | multiprimary | b | key | true - contrib_regression | public | multiprimary | c | key | true - contrib_regression | public | columntest | a a | key | true - contrib_regression | public | columntest | b b | key | true - contrib_regression | public | limittest | id | key | true - contrib_regression | public | grem1_1 | a | key | true - contrib_regression | public | grem1_2 | a | key | true - contrib_regression | public | case_exp | c1 | key | true - contrib_regression | public | type_STRING | col | key | true - contrib_regression | public | type_BOOLEANpk | col | key | true - contrib_regression | public | type_BOOLEAN | i | key | true - contrib_regression | public | type_BYTE | col | key | true - contrib_regression | public | type_SINT | col | key | true - contrib_regression | public | type_BINT | col | key | true - contrib_regression | public | type_INTEGER | col | key | true - contrib_regression | public | type_FLOAT | col | key | true - contrib_regression | public | type_DOUBLE | col | key | true - contrib_regression | public | type_TIMESTAMP | col | key | true - contrib_regression | public | type_BLOB | col | key | true - contrib_regression | public | type_DATE | col | key | true - contrib_regression | public | type_TIME | col | key | true - contrib_regression | public | type_UUIDpk | col | key | true - contrib_regression | public | type_MACADDRpk | col | key | true - contrib_regression | public | type_MACADDR8pk | col | key | true - contrib_regression | public | BitT | p | key | true - contrib_regression | public | type_TEXT | col | key | true - contrib_regression | public | shorty | id | key | true - contrib_regression | public | A a | col | key | true - contrib_regression | public | fts_table_data | id | key | true - contrib_regression | public | fts_table_idx | segid | key | true - contrib_regression | public | fts_table_idx | term | key | true - contrib_regression | public | fts_table_content | id | key | true - contrib_regression | public | fts_table_docsize | id | key | true - contrib_regression | public | fts_table_config | k | key | true - contrib_regression | public | RO_RW_test | i | key | true - contrib_regression | public | Unicode data | i | key | true -(41 rows) - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/gis_no/type.out b/expected/17.0/gis_no/type.out deleted file mode 100644 index a5f43f4d..00000000 --- a/expected/17.0/gis_no/type.out +++ /dev/null @@ -1,537 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col ---------------------------------------------- - [1,2,"foo",null] - {"bar":"baz","balance":7.77,"active":false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/gis_ok/auto_import.out b/expected/17.0/gis_ok/auto_import.out deleted file mode 100644 index ec81e744..00000000 --- a/expected/17.0/gis_ok/auto_import.out +++ /dev/null @@ -1,638 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n ------------------------+----------------------+--------------------+------------------------+---------------------+---- - contrib_regression | public | department | contrib_regression | sqlite_svr | 1 - contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 - contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 - contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 - contrib_regression | public | t | contrib_regression | sqlite_svr | 5 - contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 - contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 - contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 - contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 - contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 - contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 - contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 - contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 - contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 - contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 - contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 - contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 - contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 - contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 - contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 - contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 - contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 - contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 - contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 - contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 - contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 - contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 - contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 - contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 - contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 - contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 - contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 - contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 - contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 - contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 - contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 - contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 - contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 - contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 - contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 - contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 - contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 - contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 - contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 - contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 - contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 - contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 - contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 - contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 - contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 - contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 - contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 - contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 - contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 - contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 -(55 rows) - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; - n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name -----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- - 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 - 1 | department | department_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text - 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 - 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric - 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 - 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar - 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 - 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 - 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 - 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 - 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 - 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 - 8 | noprimary | b | 2 | | YES | text | pg_catalog | text - 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 - 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 - 9 | limittest | y | 3 | | YES | text | pg_catalog | text - 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 - 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 - 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text - 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar - 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text - 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool - 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 - 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool - 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar - 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 - 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 - 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 - 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 - 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 - 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp - 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp - 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea - 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date - 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time - 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 - 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit - 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 - 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit - 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid - 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 - 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid - 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr - 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 - 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr - 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 - 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 - 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 - 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography - 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric - 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry - 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography - 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json - 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar - 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 - 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text - 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json - 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text - 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar - 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 - 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text - 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb - 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text - 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 - 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 - 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit - 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit - 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea - 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 - 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar - 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar - 39 | typetest | t | 4 | | YES | text | pg_catalog | text - 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp - 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp - 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text - 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 - 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar - 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar - 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text - 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text - 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text - 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text - 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text - 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea - 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 - 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric - 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date - 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text - 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar - 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 - 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json - 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 - 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 - 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar - 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 - 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea - 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea - 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 - 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea - 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea - 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 - 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea - 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea - 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 - 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea - 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea - 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea - 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 - 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text - 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 - 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 - 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text - 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text - 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea - 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry - 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar - 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 - 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text - 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb - 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 - 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry - 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date - 55 | ♂ | class | 6 | | YES | text | pg_catalog | text - 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar -(159 rows) - ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; - n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp -----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- - 1 | department | department_id | 1 | | | 64 | 2 | 0 | - 1 | department | department_name | 2 | | 1073741824 | | | | - 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | - 2 | employee | emp_name | 2 | | 1073741824 | | | | - 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | - 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | - 3 | empdata | emp_dat | 2 | | | | 10 | | - 4 | numbers | a | 1 | | | 64 | 2 | 0 | - 4 | numbers | b | 2 | 255 | 1020 | | | | - 5 | t | a | 1 | | | 64 | 2 | 0 | - 5 | t | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | - 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | - 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | - 7 | columntest | a a | 1 | | | 64 | 2 | 0 | - 7 | columntest | b b | 2 | | | 64 | 2 | 0 | - 7 | columntest | c c | 3 | | | 64 | 2 | 0 | - 8 | noprimary | a | 1 | | | 64 | 2 | 0 | - 8 | noprimary | b | 2 | | 1073741824 | | | | - 9 | limittest | id | 1 | | | 64 | 2 | 0 | - 9 | limittest | x | 2 | | | 64 | 2 | 0 | - 9 | limittest | y | 3 | | 1073741824 | | | | - 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | - 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | - 12 | case_exp | c3 | 2 | | 1073741824 | | | | - 12 | case_exp | c6 | 3 | 10 | 40 | | | | - 13 | type_STRING | col | 1 | | 1073741824 | | | | - 14 | type_BOOLEANpk | col | 1 | | | | | | - 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | - 15 | type_BOOLEAN | b | 2 | | | | | | - 16 | type_BYTE | col | 1 | 1 | 4 | | | | - 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | - 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | - 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | - 20 | type_FLOAT | col | 1 | | | 53 | 2 | | - 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | - 22 | type_TIMESTAMP | col | 1 | | | | | | 6 - 22 | type_TIMESTAMP | b | 2 | | | | | | 6 - 23 | type_BLOB | col | 1 | | | | | | - 24 | type_DATE | col | 1 | | | | | | 0 - 25 | type_TIME | col | 1 | | | | | | 6 - 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | - 26 | type_BIT | b | 2 | 1 | | | | | - 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | - 27 | type_VARBIT | b | 2 | 1 | | | | | - 28 | type_UUIDpk | col | 1 | | | | | | - 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | - 29 | type_UUID | u | 2 | | | | | | - 30 | type_MACADDRpk | col | 1 | | | | | | - 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | - 31 | type_MACADDR | m | 2 | | | | | | - 32 | type_MACADDR8pk | col | 1 | | | | | | - 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | - 33 | type_MACADDR8 | m | 2 | | | | | | - 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | - 34 | types_PostGIS | gm | 2 | | | | | | - 34 | types_PostGIS | gg | 3 | | | | | | - 34 | types_PostGIS | r | 4 | | | | 10 | | - 34 | types_PostGIS | t | 5 | | 1073741824 | | | | - 34 | types_PostGIS | gm1 | 6 | | | | | | - 34 | types_PostGIS | gg1 | 7 | | | | | | - 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | - 35 | type_JSON | j | 2 | | | | | | - 35 | type_JSON | ot | 3 | 8 | 32 | | | | - 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | - 35 | type_JSON | q | 5 | | 1073741824 | | | | - 35 | type_JSON | j1 | 6 | | | | | | - 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | - 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | - 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | - 36 | type_JSONB | j | 2 | | | | | | - 36 | type_JSONB | ot | 3 | 8 | 32 | | | | - 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | - 36 | type_JSONB | q | 5 | | 1073741824 | | | | - 36 | type_JSONB | j1 | 6 | | | | | | - 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | - 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | - 37 | BitT | p | 1 | | | 64 | 2 | 0 | - 37 | BitT | a | 2 | 3 | | | | | - 37 | BitT | b | 3 | 5 | | | | | - 38 | notype | a | 1 | | | | | | - 39 | typetest | i | 1 | | | 64 | 2 | 0 | - 39 | typetest | v | 2 | 10 | 40 | | | | - 39 | typetest | c | 3 | 10 | 40 | | | | - 39 | typetest | t | 4 | | 1073741824 | | | | - 39 | typetest | d | 5 | | | | | | 6 - 39 | typetest | ti | 6 | | | | | | 6 - 40 | type_TEXT | col | 1 | | 1073741824 | | | | - 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | - 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | - 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | - 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | - 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | - 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | - 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | - 41 | alltypetest | c8 | 8 | 10 | 40 | | | | - 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | - 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | - 41 | alltypetest | c11 | 11 | | 1073741824 | | | | - 41 | alltypetest | c12 | 12 | | 1073741824 | | | | - 41 | alltypetest | c13 | 13 | | 1073741824 | | | | - 41 | alltypetest | c14 | 14 | | 1073741824 | | | | - 41 | alltypetest | c15 | 15 | | 1073741824 | | | | - 41 | alltypetest | c16 | 16 | | | | | | - 41 | alltypetest | c17 | 17 | | | 53 | 2 | | - 41 | alltypetest | c18 | 18 | | | 53 | 2 | | - 41 | alltypetest | c19 | 19 | | | 53 | 2 | | - 41 | alltypetest | c20 | 20 | | | 53 | 2 | | - 41 | alltypetest | c21 | 21 | | | | 10 | | - 41 | alltypetest | c22 | 22 | | | | 10 | | - 41 | alltypetest | c23 | 23 | | | | | | 0 - 41 | alltypetest | c24 | 24 | | | | | | 6 - 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | - 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | - 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | - 42 | json_osm_test | tags | 4 | | | | | | - 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | - 43 | shorty | id | 1 | | | 64 | 2 | 0 | - 43 | shorty | c | 2 | 10 | 40 | | | | - 44 | A a | col | 1 | | | 64 | 2 | 0 | - 45 | fts_table | name | 1 | | | | | | - 45 | fts_table | description | 2 | | | | | | - 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | - 46 | fts_table_data | block | 2 | | | | | | - 47 | fts_table_idx | segid | 1 | | | | | | - 47 | fts_table_idx | term | 2 | | | | | | - 47 | fts_table_idx | pgno | 3 | | | | | | - 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | - 48 | fts_table_content | c0 | 2 | | | | | | - 48 | fts_table_content | c1 | 3 | | | | | | - 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | - 49 | fts_table_docsize | sz | 2 | | | | | | - 50 | fts_table_config | k | 1 | | | | | | - 50 | fts_table_config | v | 2 | | | | | | - 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | - 51 | RO_RW_test | a | 2 | | 1073741824 | | | | - 51 | RO_RW_test | b | 3 | | | 53 | 2 | | - 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | - 52 | Unicode data | i | 1 | | 1073741824 | | | | - 52 | Unicode data | t | 2 | | 1073741824 | | | | - 53 | type_BOOLEAN_oper | i | 1 | | | | | | - 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | - 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | - 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | - 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | - 54 | ♁ | geom | 1 | | | | | | - 54 | ♁ | osm_type | 2 | 16 | 64 | | | | - 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | - 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | - 54 | ♁ | arr | 5 | | 1073741824 | | | | - 54 | ♁ | t | 6 | | | | | | - 55 | ♂ | id | 1 | | | 64 | 2 | 0 | - 55 | ♂ | UAI | 2 | 254 | 1016 | | | | - 55 | ♂ | ⌖ | 3 | | | | | | - 55 | ♂ | geom | 4 | | | | | | - 55 | ♂ | t₀ | 5 | | | | | | 0 - 55 | ♂ | class | 6 | | 1073741824 | | | | - 55 | ♂ | URL | 7 | 80 | 320 | | | | -(159 rows) - ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen -----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- - 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER - 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER - 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER - 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER - 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER - 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER - 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER - 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER - 5 | t | a | 1 | | | | 1 | NO | NO | NEVER - 5 | t | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER - 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER - 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER - 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER - 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER - 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER - 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER - 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER - 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER - 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER - 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER - 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER - 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER - 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER - 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER - 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER - 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER - 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER - 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER - 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER - 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER - 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER - 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER - 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER - 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER - 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER - 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER - 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER - 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER - 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER - 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER - 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER - 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER - 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER - 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER - 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER - 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER - 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER - 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER - 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER - 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER - 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER - 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER - 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER - 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER - 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER - 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER - 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER - 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER - 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER - 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER - 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER - 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER - 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER - 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER - 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER - 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER - 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER - 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER - 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER - 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER - 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER - 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER - 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER - 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER - 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER - 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER - 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER - 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER - 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER - 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER - 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER - 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER - 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER - 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER - 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER - 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER - 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER - 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER - 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER - 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER - 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER - 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER - 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER - 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER - 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER - 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER - 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER - 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER - 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER - 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER - 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER - 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER - 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER - 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER - 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER - 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER - 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER - 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER - 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER - 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER - 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER - 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER - 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER - 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER - 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER - 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER - 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER - 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER - 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER - 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER - 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER - 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER - 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER - 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER - 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER - 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER - 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER - 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER - 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER - 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER - 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER - 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER - 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER - 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER - 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER - 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER -(159 rows) - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - table_catalog | table_schema | table_name | column_name | option_name | option_value ---------------------+--------------+-------------------+---------------+-------------+-------------- - contrib_regression | public | department | department_id | key | true - contrib_regression | public | employee | emp_id | key | true - contrib_regression | public | empdata | emp_id | key | true - contrib_regression | public | numbers | a | key | true - contrib_regression | public | t | a | key | true - contrib_regression | public | multiprimary | b | key | true - contrib_regression | public | multiprimary | c | key | true - contrib_regression | public | columntest | a a | key | true - contrib_regression | public | columntest | b b | key | true - contrib_regression | public | limittest | id | key | true - contrib_regression | public | grem1_1 | a | key | true - contrib_regression | public | grem1_2 | a | key | true - contrib_regression | public | case_exp | c1 | key | true - contrib_regression | public | type_STRING | col | key | true - contrib_regression | public | type_BOOLEANpk | col | key | true - contrib_regression | public | type_BOOLEAN | i | key | true - contrib_regression | public | type_BYTE | col | key | true - contrib_regression | public | type_SINT | col | key | true - contrib_regression | public | type_BINT | col | key | true - contrib_regression | public | type_INTEGER | col | key | true - contrib_regression | public | type_FLOAT | col | key | true - contrib_regression | public | type_DOUBLE | col | key | true - contrib_regression | public | type_TIMESTAMP | col | key | true - contrib_regression | public | type_BLOB | col | key | true - contrib_regression | public | type_DATE | col | key | true - contrib_regression | public | type_TIME | col | key | true - contrib_regression | public | type_UUIDpk | col | key | true - contrib_regression | public | type_MACADDRpk | col | key | true - contrib_regression | public | type_MACADDR8pk | col | key | true - contrib_regression | public | BitT | p | key | true - contrib_regression | public | type_TEXT | col | key | true - contrib_regression | public | shorty | id | key | true - contrib_regression | public | A a | col | key | true - contrib_regression | public | fts_table_data | id | key | true - contrib_regression | public | fts_table_idx | segid | key | true - contrib_regression | public | fts_table_idx | term | key | true - contrib_regression | public | fts_table_content | id | key | true - contrib_regression | public | fts_table_docsize | id | key | true - contrib_regression | public | fts_table_config | k | key | true - contrib_regression | public | RO_RW_test | i | key | true - contrib_regression | public | Unicode data | i | key | true -(41 rows) - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/gis_ok/type.out b/expected/17.0/gis_ok/type.out deleted file mode 100644 index c5eccfaf..00000000 --- a/expected/17.0/gis_ok/type.out +++ /dev/null @@ -1,539 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; ---Testcase 16: -SELECT * FROM "type_STRING"; - col --------- - string -(1 row) - ---Testcase 18: -SELECT * FROM "type_BYTE"; - col ------ - c -(1 row) - ---Testcase 19: -SELECT * FROM "type_SINT"; - col --------- - 32767 - -32768 -(2 rows) - ---Testcase 20: -SELECT * FROM "type_BINT"; - col ----------------------- - 9223372036854775807 - -9223372036854775808 -(2 rows) - ---Testcase 21: -SELECT * FROM "type_INTEGER"; - col ---------------------- - 9223372036854775807 -(1 row) - ---Testcase 22: -SELECT * FROM "type_FLOAT"; - col --------- - 3.1415 -(1 row) - ---Testcase 23: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 -(1 row) - -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 25: -SELECT * FROM "type_BLOB"; - col ------------- - \xdeadbeef -(1 row) - ---Testcase 26: -SELECT * FROM typetest; - i | v | c | t | d | ti ----+---+------------+---+-------------------------+------------------------- - 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 -(1 row) - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - col ------- - TYPE -(1 row) - ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) -(1 row) - --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - col ------- - TYPE - type -(2 rows) - ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - col ------- - TYPE -(1 row) - ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) - Filter: (col ~~* 'typ%'::text) -(2 rows) - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) -(3 rows) - ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - col | b --------------------------+--------------------- - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(2 rows) - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 - 2017-11-06 01:03:00 | 2017-11-07 00:00:00 -(2 rows) - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - QUERY PLAN --------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" -(4 rows) - ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."type_TIMESTAMP" - Output: col, b - SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) -(3 rows) - ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - col | b --------------------------+--------------------- - 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 -(1 row) - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - col ------------- - 2021-02-23 - 2021-03-08 - 9999-12-30 -(3 rows) - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - col ---------------- - 01:23:45 - 01:23:45.6789 -(2 rows) - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) - Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 - SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" -(3 rows) - ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 ---------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- - 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 -(1 row) - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; - col ---------------------------------------------- - [1,2,"foo",null] - {"bar":"baz","balance":7.77,"active":false} -(2 rows) - ---Testcase 57 -DELETE FROM type_JSON; ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK - b ---- - t - f -(2 rows) - ---Testcase 65: -DELETE FROM "type_BOOLEAN"; --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK - col --------------------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - col ---------------------- - 9223372036854775807 -(1 row) - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - col ----------- - 12:05:06 -(1 row) - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - col ------------- - 2012-05-06 -(1 row) - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK - col --------------------------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 3.14159265 - 1.3e-05 -(2 rows) - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - col -------------- - 12:05:06.12 -(1 row) - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - col ------------- - 1999-01-12 -(1 row) - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); -ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite result code 1555 -CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - col -------------------- - 1999.012 - 3.141592653589793 - Infinity - -Infinity -(4 rows) - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/libsqlite.out b/expected/17.0/libsqlite.out index 087bfd53..fe4fe2f8 100644 --- a/expected/17.0/libsqlite.out +++ b/expected/17.0/libsqlite.out @@ -22,9 +22,5 @@ SELECT sqlite_fdw_sqlite_code_source(); 2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde (1 row) ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/sqlite_fdw.out b/expected/17.0/sqlite_fdw.out index 4d215851..fa86e504 100644 --- a/expected/17.0/sqlite_fdw.out +++ b/expected/17.0/sqlite_fdw.out @@ -568,7 +568,7 @@ SELECT * from numbers; --Testcase 68: INSERT INTO numbers VALUES(1, 'One'); ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: INSERT INTO main."numbers"(`a`, `b`) VALUES (?, ?) --Testcase 69: DELETE from numbers; @@ -582,7 +582,7 @@ COMMIT; --Testcase 72: UPDATE numbers SET b='Two' WHERE a = 1; ERROR: Failed to execute remote SQL -HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite result code 2067 +HINT: SQLite error 'UNIQUE constraint failed: numbers.b', SQLite primary result code 19, extended result code 2067 CONTEXT: SQL query: UPDATE main."numbers" SET `b` = 'Two' WHERE ((`a` = 1)) --Testcase 73: SELECT * from numbers; diff --git a/expected/17.0/types/bitstring.out b/expected/17.0/types/bitstring.out new file mode 100644 index 00000000..211ddf3e --- /dev/null +++ b/expected/17.0/types/bitstring.out @@ -0,0 +1,807 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 02: +CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); +--Testcase 03: +DROP FOREIGN TABLE IF EXISTS "type_BIT+"; +NOTICE: foreign table "type_BIT+" does not exist, skipping +--Testcase 04: +CREATE FOREIGN TABLE "type_BIT+"( "i" int OPTIONS (key 'true'), "b" bit(6), "t" text, "l" smallint, "bi" bigint OPTIONS (column_name 'b')) SERVER sqlite_svr OPTIONS (table 'type_BIT+'); +--Testcase 05: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (1, 1); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 06: type mismatch +INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (2, 2); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 07: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (3, '1'); +ERROR: bit string length 1 does not match type bit(6) +--Testcase 08: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (4, '10'); +ERROR: bit string length 2 does not match type bit(6) +--Testcase 09: improper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (5, '101'); +ERROR: bit string length 3 does not match type bit(6) +--Testcase 10: +INSERT INTO "type_BIT" ("i", "b") VALUES (6, '110110'); +--Testcase 11: +INSERT INTO "type_BIT" ("i", "b") VALUES (7, '111001'); +--Testcase 12: +INSERT INTO "type_BIT" ("i", "b") VALUES (8, '110000'); +--Testcase 13: +INSERT INTO "type_BIT" ("i", "b") VALUES (9, '100001'); +--Testcase 14: type mismatch with proper data length +INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); +ERROR: column "b" is of type bit but expression is of type integer +LINE 1: INSERT INTO "type_BIT" ("i", "b") VALUES (10, 53); + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 15: +SELECT * FROM "type_BIT+"; + i | b | t | l | bi +---+--------+---------+---+---- + 6 | 110110 | integer | 2 | 54 + 7 | 111001 | integer | 2 | 57 + 8 | 110000 | integer | 2 | 48 + 9 | 100001 | integer | 2 | 33 +(4 rows) + +--Testcase 16: +SELECT * FROM "type_BIT" WHERE b < '110110'; + i | b +---+-------- + 8 | 110000 + 9 | 100001 +(2 rows) + +--Testcase 17: +SELECT * FROM "type_BIT" WHERE b > '110110'; + i | b +---+-------- + 7 | 111001 +(1 row) + +--Testcase 18: +SELECT * FROM "type_BIT" WHERE b = '110110'; + i | b +---+-------- + 6 | 110110 +(1 row) + +--Testcase 20: +CREATE FOREIGN TABLE "type_VARBIT"( "i" int OPTIONS (key 'true'), "b" varbit(70)) SERVER sqlite_svr OPTIONS (table 'type_VARBIT'); +--Testcase 21: +DROP FOREIGN TABLE IF EXISTS "type_VARBIT+"; +NOTICE: foreign table "type_VARBIT+" does not exist, skipping +--Testcase 22: +CREATE FOREIGN TABLE "type_VARBIT+"( "i" int OPTIONS (key 'true'), "b" varbit(70), "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_VARBIT+'); +--Testcase 23: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (1, '1'); +--Testcase 24: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (2, '10'); +--Testcase 25: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (3, '11'); +--Testcase 26: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (4, '100'); +--Testcase 27: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (5, '101'); +--Testcase 28: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (6, '110110'); +--Testcase 29: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (7, '111001'); +--Testcase 30: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (8, '110000'); +--Testcase 31: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (9, '100001'); +--Testcase 32: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (10, '0100100101011001010010101000111110110101101101111011000101010'); +--Testcase 33: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (11, '01001001010110010100101010001111101101011011011110110001010101'); +--Testcase 34: +SELECT * FROM "type_VARBIT+"; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 6 | 110110 | integer | 2 + 7 | 111001 | integer | 2 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(11 rows) + +--Testcase 35: +SELECT * FROM "type_VARBIT+" WHERE b < '110110'; + i | b | t | l +---+--------+---------+--- + 1 | 1 | integer | 1 + 2 | 10 | integer | 1 + 3 | 11 | integer | 1 + 4 | 100 | integer | 1 + 5 | 101 | integer | 1 + 8 | 110000 | integer | 2 + 9 | 100001 | integer | 2 +(7 rows) + +--Testcase 36: +SELECT * FROM "type_VARBIT+" WHERE b > '110110'; + i | b | t | l +----+---------------------------------------------------------------+---------+---- + 7 | 111001 | integer | 2 + 10 | 100100101011001010010101000111110110101101101111011000101010 | integer | 18 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 +(3 rows) + +--Testcase 37: +SELECT * FROM "type_VARBIT+" WHERE b = '110110'; + i | b | t | l +---+--------+---------+--- + 6 | 110110 | integer | 2 +(1 row) + +--Testcase 38: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (12, '010010010101100101001010100011111011010110110111101100010101010'); +--Testcase 39: +INSERT INTO "type_VARBIT" ("i", "b") VALUES (13, '0100100101011001010010101000111110110101101101111011000101010101'); +--Testcase 40: very long bit string, expected ERROR, 65 bits +INSERT INTO "type_VARBIT" ("i", "b") VALUES (14, '01001001010110010100101010001111101101011011011110110001010101010'); +ERROR: SQLite FDW dosens't support very long bit/varbit data +HINT: bit length 65, maximum 64 +--Testcase 41: +SELECT * FROM "type_VARBIT+" WHERE "i" > 10; + i | b | t | l +----+-----------------------------------------------------------------+---------+---- + 11 | 1001001010110010100101010001111101101011011011110110001010101 | integer | 19 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | integer | 19 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | integer | 19 +(3 rows) + +--Testcase 42: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 111111 + 6 | 110110 | 8 | 110000 | 110110 + 6 | 110110 | 9 | 100001 | 110111 + 7 | 111001 | 6 | 110110 | 111111 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 111001 + 7 | 111001 | 9 | 100001 | 111001 + 8 | 110000 | 6 | 110110 | 110110 + 8 | 110000 | 7 | 111001 | 111001 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 110001 + 9 | 100001 | 6 | 110110 | 110111 + 9 | 100001 | 7 | 111001 | 111001 + 9 | 100001 | 8 | 110000 | 110001 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 43: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 110110 + 6 | 110110 | 7 | 111001 | 110000 + 6 | 110110 | 8 | 110000 | 110000 + 6 | 110110 | 9 | 100001 | 100000 + 7 | 111001 | 6 | 110110 | 110000 + 7 | 111001 | 7 | 111001 | 111001 + 7 | 111001 | 8 | 110000 | 110000 + 7 | 111001 | 9 | 100001 | 100001 + 8 | 110000 | 6 | 110110 | 110000 + 8 | 110000 | 7 | 111001 | 110000 + 8 | 110000 | 8 | 110000 | 110000 + 8 | 110000 | 9 | 100001 | 100000 + 9 | 100001 | 6 | 110110 | 100000 + 9 | 100001 | 7 | 111001 | 100001 + 9 | 100001 | 8 | 110000 | 100000 + 9 | 100001 | 9 | 100001 | 100001 +(16 rows) + +--Testcase 44: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + i₁ | b₁ | i₂ | b₂ | res +----+--------+----+--------+-------- + 6 | 110110 | 6 | 110110 | 000000 + 6 | 110110 | 7 | 111001 | 001111 + 6 | 110110 | 8 | 110000 | 000110 + 6 | 110110 | 9 | 100001 | 010111 + 7 | 111001 | 6 | 110110 | 001111 + 7 | 111001 | 7 | 111001 | 000000 + 7 | 111001 | 8 | 110000 | 001001 + 7 | 111001 | 9 | 100001 | 011000 + 8 | 110000 | 6 | 110110 | 000110 + 8 | 110000 | 7 | 111001 | 001001 + 8 | 110000 | 8 | 110000 | 000000 + 8 | 110000 | 9 | 100001 | 010001 + 9 | 100001 | 6 | 110110 | 010111 + 9 | 100001 | 7 | 111001 | 011000 + 9 | 100001 | 8 | 110000 | 010001 + 9 | 100001 | 9 | 100001 | 000000 +(16 rows) + +--Testcase 45: +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 46: +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 +(4 rows) + +--Testcase 47: +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 +(4 rows) + +--Testcase 48: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b | b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 49: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b & b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 50: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_BIT" b1 INNER JOIN "type_BIT" b2 ON true; + QUERY PLAN +-------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..77960.48 rows=4901796 width=58) + Output: b1.i, b1.b, b2.i, b2.b, (b1.b # b2.b) + -> Foreign Scan on public."type_BIT" b1 (cost=10.00..2214.00 rows=2214 width=13) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" + -> Materialize (cost=10.00..2225.07 rows=2214 width=13) + Output: b2.i, b2.b + -> Foreign Scan on public."type_BIT" b2 (cost=10.00..2214.00 rows=2214 width=13) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(10 rows) + +--Testcase 51: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 52: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (b << 3) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 53: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_BIT"; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2219.53 rows=2214 width=45) + Output: i, b, (~ b) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(3 rows) + +--Testcase 54: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot OR bit strings of different sizes +--Testcase 55: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot AND bit strings of different sizes +--Testcase 56: +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; +ERROR: cannot XOR bit strings of different sizes +--Testcase 57: +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 001 + 5 | 101 | 001 + 6 | 110110 | 001101 + 7 | 111001 | 001110 + 8 | 110000 | 001100 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 001001001010110010100101010001111101101011011011110110001010 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0010010010101100101001010100011111011010110110111101100010101 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 00100100101011001010010101000111110110101101101111011000101010 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 001001001010110010100101010001111101101011011011110110001010101 +(13 rows) + +--Testcase 58: +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 00 + 3 | 11 | 00 + 4 | 100 | 000 + 5 | 101 | 000 + 6 | 110110 | 110000 + 7 | 111001 | 001000 + 8 | 110000 | 000000 + 9 | 100001 | 001000 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 100101011001010010101000111110110101101101111011000101010000 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 1001010110010100101010001111101101011011011110110001010101000 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 10010101100101001010100011111011010110110111101100010101010000 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 100101011001010010101000111110110101101101111011000101010101000 +(13 rows) + +--Testcase 59: +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + i | b | res +----+-----------------------------------------------------------------+----------------------------------------------------------------- + 1 | 1 | 0 + 2 | 10 | 01 + 3 | 11 | 00 + 4 | 100 | 011 + 5 | 101 | 010 + 6 | 110110 | 001001 + 7 | 111001 | 000110 + 8 | 110000 | 001111 + 9 | 100001 | 011110 + 10 | 100100101011001010010101000111110110101101101111011000101010 | 011011010100110101101010111000001001010010010000100111010101 + 11 | 1001001010110010100101010001111101101011011011110110001010101 | 0110110101001101011010101110000010010100100100001001110101010 + 12 | 10010010101100101001010100011111011010110110111101100010101010 | 01101101010011010110101011100000100101001001000010011101010101 + 13 | 100100101011001010010101000111110110101101101111011000101010101 | 011011010100110101101010111000001001010010010000100111010101010 +(13 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" | b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" | (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 61: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" & b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" & (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 62: +EXPLAIN VERBOSE +SELECT b1."i" "i₁", b1."b" "b₁", b2."i" "i₂", b2."b" "b₂", b1."b" # b2."b" "res" FROM "type_VARBIT" b1 INNER JOIN "type_VARBIT" b2 ON true; + QUERY PLAN +----------------------------------------------------------------------------------------------- + Nested Loop (cost=20.00..53330.55 rows=3312400 width=74) + Output: b1.i, b1.b, b2.i, b2.b, ((b1.b)::"bit" # (b2.b)::"bit") + -> Foreign Scan on public."type_VARBIT" b1 (cost=10.00..1820.00 rows=1820 width=21) + Output: b1.i, b1.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" + -> Materialize (cost=10.00..1829.10 rows=1820 width=21) + Output: b2.i, b2.b + -> Foreign Scan on public."type_VARBIT" b2 (cost=10.00..1820.00 rows=1820 width=21) + Output: b2.i, b2.b + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(10 rows) + +--Testcase 63: +EXPLAIN VERBOSE +SELECT "i", "b", "b" >> 2 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" >> 2) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 64: +EXPLAIN VERBOSE +SELECT "i", "b", "b" << 3 "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, ((b)::"bit" << 3) + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 65: +EXPLAIN VERBOSE +SELECT "i", "b", ~ "b" "res" FROM "type_VARBIT"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_VARBIT" (cost=10.00..1824.55 rows=1820 width=53) + Output: i, b, (~ (b)::"bit") + SQLite query: SELECT `i`, `b` FROM main."type_VARBIT" +(3 rows) + +--Testcase 66: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 67: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 68: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 69: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 70: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 71: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 72: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 73: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 74: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 75: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 76: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 77: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 78: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 79: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 80: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 81: +SELECT "i", "b", "b" & B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 100010 + 7 | 111001 | 101001 + 8 | 110000 | 100000 + 9 | 100001 | 100001 +(4 rows) + +--Testcase 82: +SELECT "i", "b", "b" | B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 111111 + 7 | 111001 | 111011 + 8 | 110000 | 111011 + 9 | 100001 | 101011 +(4 rows) + +--Testcase 83: +SELECT "i", "b", "b" # B'101011' "res" FROM "type_BIT"; + i | b | res +---+--------+-------- + 6 | 110110 | 011101 + 7 | 111001 | 010010 + 8 | 110000 | 011011 + 9 | 100001 | 001010 +(4 rows) + +--Testcase 84: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 85: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 86: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 87: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 88: +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 89: +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + i | b +---+-------- + 6 | 110110 + 7 | 111001 + 8 | 110000 + 9 | 100001 +(4 rows) + +--Testcase 90: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" & B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` & 43) IS NOT NULL)) +(3 rows) + +--Testcase 91: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" | B'101011') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` | 43) IS NOT NULL)) +(3 rows) + +--Testcase 92: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" # B'101011') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + Filter: (("type_BIT".b # '101011'::"bit") IS NOT NULL) + SQLite query: SELECT `i`, `b` FROM main."type_BIT" +(4 rows) + +--Testcase 93: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" >> 1) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` >> 1) IS NOT NULL)) +(3 rows) + +--Testcase 94: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE ("b" << 2) IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((`b` << 2) IS NOT NULL)) +(3 rows) + +--Testcase 95: +EXPLAIN VERBOSE +SELECT "i", "b" FROM "type_BIT" WHERE (~ "b") IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_BIT" (cost=10.00..2203.00 rows=2203 width=13) + Output: i, b + SQLite query: SELECT `i`, `b` FROM main."type_BIT" WHERE (((~ `b`) IS NOT NULL)) +(3 rows) + +--Testcase 005: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BIT" +drop cascades to foreign table "type_BIT+" +drop cascades to foreign table "type_VARBIT" +drop cascades to foreign table "type_VARBIT+" diff --git a/expected/17.0/types/bool.out b/expected/17.0/types/bool.out new file mode 100644 index 00000000..92c66f7e --- /dev/null +++ b/expected/17.0/types/bool.out @@ -0,0 +1,1273 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 000: +CREATE EXTENSION sqlite_fdw; +--Testcase 001: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 01: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; +--Testcase 02: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (1, TRUE); +--Testcase 03: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (2, FALSE); +--Testcase 04: +CREATE FOREIGN TABLE "type_BOOLEAN+"( "i" int, "b" bool, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN+'); +--Testcase 05: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE text; +--Testcase 06: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (3, TRUE); +--Testcase 07: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (4, FALSE); +--Testcase 08: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (5, true); +--Testcase 09: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (6, false); +--Testcase 10: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (7, 'Yes'); +--Testcase 11: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (8, 'YeS'); +--Testcase 12: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (9, 'yes'); +--Testcase 13: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (10, 'no'); +--Testcase 14: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (11, 'No'); +--Testcase 15: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (12, 'nO'); +--Testcase 16: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (13, 'off'); +--Testcase 17: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (14, 'oFf'); +--Testcase 18: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (15, 'on'); +--Testcase 19: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (16, 'ON'); +--Testcase 20: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (17, 't'); +--Testcase 21: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (18, 'T'); +--Testcase 22: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (19, 'Y'); +--Testcase 23: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (20, 'y'); +--Testcase 24: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (21, 'F'); +--Testcase 25: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (22, 'f'); +--Testcase 26: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (23, 'x'); +--Testcase 27: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (24, '0'); +--Testcase 28: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (25, '1'); +--Testcase 29: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (26, NULL); +--Testcase 30: +SELECT * FROM "type_BOOLEAN"; + i | b +----+------- + 1 | 1 + 2 | 0 + 3 | true + 4 | false + 5 | true + 6 | false + 7 | Yes + 8 | YeS + 9 | yes + 10 | no + 11 | No + 12 | nO + 13 | off + 14 | oFf + 15 | on + 16 | ON + 17 | t + 18 | T + 19 | Y + 20 | y + 21 | F + 22 | f + 23 | x + 24 | 0 + 25 | 1 + 26 | +(26 rows) + +--Testcase 31: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 32: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN"; + QUERY PLAN +--------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN" + Output: i, b + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`) FROM main."type_BOOLEAN" +(3 rows) + +--Testcase 33: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_BOOLEAN+"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" + Output: i, b, t, l + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 34: ERR - invalid text affinity because not ISO:SQL text input +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "text" affinity (1 bytes) : 'x' +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 35 +DELETE FROM "type_BOOLEAN" WHERE i = 23; +--Testcase 36: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 37: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NULL; + i | b | t | l +----+---+------+--- + 26 | | null | +(1 row) + +--Testcase 38: +SELECT * FROM "type_BOOLEAN+" WHERE b IS NOT NULL; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 +(24 rows) + +--Testcase 39: +SELECT * FROM "type_BOOLEAN+" WHERE b; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 3 | t | text | 4 + 5 | t | text | 4 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 25 | t | integer | 1 +(13 rows) + +--Testcase 40: +SELECT * FROM "type_BOOLEAN+" WHERE NOT b; + i | b | t | l +----+---+---------+--- + 2 | f | integer | 1 + 4 | f | text | 5 + 6 | f | text | 5 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 +(11 rows) + +--Testcase 41: +CREATE FOREIGN TABLE "type_BOOLEANpk" (col bool OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 42: +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +--Testcase 43: +INSERT INTO "type_BOOLEANpk" VALUES (FALSE); +--Testcase 44: ERR - primary key +INSERT INTO "type_BOOLEANpk" VALUES (TRUE); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_BOOLEANpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_BOOLEANpk"(`col`) VALUES (?) +--Testcase 45: +DELETE FROM "type_BOOLEANpk"; +--Testcase 46: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE float8; +--Testcase 47: +INSERT INTO "type_BOOLEAN"(i, b) VALUES (27, 3.14159265358979); +--Testcase 48: +ALTER FOREIGN TABLE "type_BOOLEAN" ALTER COLUMN "b" TYPE bool; +--Testcase 49: ERR - invalid float for bool column +SELECT * FROM "type_BOOLEAN+"; +ERROR: SQLite value is not compatible with PostgreSQL column data type +HINT: SQLite value with "real" affinity : 3.14159265358979 +CONTEXT: foreign table "type_BOOLEAN+" foreign column "b" have data type "boolean" (usual affinity "integer"), in query there is reference to foreign column +--Testcase 50 +DELETE FROM "type_BOOLEAN" WHERE i = 27; +--Testcase 51: +SELECT * FROM "type_BOOLEAN+"; + i | b | t | l +----+---+---------+--- + 1 | t | integer | 1 + 2 | f | integer | 1 + 3 | t | text | 4 + 4 | f | text | 5 + 5 | t | text | 4 + 6 | f | text | 5 + 7 | t | text | 3 + 8 | t | text | 3 + 9 | t | text | 3 + 10 | f | text | 2 + 11 | f | text | 2 + 12 | f | text | 2 + 13 | f | text | 3 + 14 | f | text | 3 + 15 | t | text | 2 + 16 | t | text | 2 + 17 | t | text | 1 + 18 | t | text | 1 + 19 | t | text | 1 + 20 | t | text | 1 + 21 | f | text | 1 + 22 | f | text | 1 + 24 | f | integer | 1 + 25 | t | integer | 1 + 26 | | null | +(25 rows) + +--Testcase 52: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE b; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 53: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN" SET b = NULL WHERE NOT b; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN" + -> Foreign Update on public."type_BOOLEAN" + SQLite query: UPDATE main."type_BOOLEAN" SET `b` = NULL WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 54: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE b; + QUERY PLAN +------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE (sqlite_fdw_bool(`b`)) +(3 rows) + +--Testcase 55: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN" WHERE NOT b; + QUERY PLAN +------------------------------------------------------------------------------------------ + Delete on public."type_BOOLEAN" + -> Foreign Delete on public."type_BOOLEAN" + SQLite query: DELETE FROM main."type_BOOLEAN" WHERE ((NOT sqlite_fdw_bool(`b`))) +(3 rows) + +--Testcase 56: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."type_BOOLEAN+" b + Output: i, b, t, l, (NOT b) + SQLite query: SELECT `i`, sqlite_fdw_bool(`b`), `t`, `l` FROM main."type_BOOLEAN+" +(3 rows) + +--Testcase 57: +SELECT *, NOT b nb FROM "type_BOOLEAN+" b; + i | b | t | l | nb +----+---+---------+---+---- + 1 | t | integer | 1 | f + 2 | f | integer | 1 | t + 3 | t | text | 4 | f + 4 | f | text | 5 | t + 5 | t | text | 4 | f + 6 | f | text | 5 | t + 7 | t | text | 3 | f + 8 | t | text | 3 | f + 9 | t | text | 3 | f + 10 | f | text | 2 | t + 11 | f | text | 2 | t + 12 | f | text | 2 | t + 13 | f | text | 3 | t + 14 | f | text | 3 | t + 15 | t | text | 2 | f + 16 | t | text | 2 | f + 17 | t | text | 1 | f + 18 | t | text | 1 | f + 19 | t | text | 1 | f + 20 | t | text | 1 | f + 21 | f | text | 1 | t + 22 | f | text | 1 | t + 24 | f | integer | 1 | t + 25 | t | integer | 1 | f + 26 | | null | | +(25 rows) + +--Testcase 58: +CREATE FOREIGN TABLE "type_BOOLEAN_oper"( "i" int OPTIONS (key 'true'), i1 smallint, b1 boolean, i2 smallint, b2 boolean) SERVER sqlite_svr OPTIONS (table 'type_BOOLEAN_oper'); +--Testcase 59: see INIT.SQL with mixed affinity boolean data +SELECT * FROM "type_BOOLEAN_oper"; + i | i1 | b1 | i2 | b2 +-----+----+----+----+---- + 1 | 1 | t | 1 | t + 2 | 1 | t | 2 | t + 3 | 1 | t | 3 | t + 4 | 1 | t | 4 | t + 5 | 1 | t | 5 | t + 6 | 1 | t | 6 | t + 7 | 1 | t | 7 | t + 8 | 1 | t | 8 | t + 9 | 1 | t | 9 | t + 10 | 1 | t | 10 | t + 11 | 1 | t | 11 | t + 12 | 1 | t | 12 | t + 13 | 1 | t | 13 | t + 14 | 1 | t | 14 | f + 15 | 1 | t | 15 | f + 16 | 1 | t | 16 | f + 17 | 1 | t | 17 | f + 18 | 1 | t | 18 | f + 19 | 1 | t | 19 | f + 20 | 1 | t | 20 | f + 21 | 1 | t | 21 | f + 22 | 1 | t | 22 | f + 23 | 1 | t | 23 | f + 24 | 1 | t | 24 | f + 25 | 1 | t | 25 | f + 26 | 1 | t | 26 | f + 27 | 1 | t | 27 | + 28 | 2 | t | 1 | t + 29 | 2 | t | 2 | t + 30 | 2 | t | 3 | t + 31 | 2 | t | 4 | t + 32 | 2 | t | 5 | t + 33 | 2 | t | 6 | t + 34 | 2 | t | 7 | t + 35 | 2 | t | 8 | t + 36 | 2 | t | 9 | t + 37 | 2 | t | 10 | t + 38 | 2 | t | 11 | t + 39 | 2 | t | 12 | t + 40 | 2 | t | 13 | t + 41 | 2 | t | 14 | f + 42 | 2 | t | 15 | f + 43 | 2 | t | 16 | f + 44 | 2 | t | 17 | f + 45 | 2 | t | 18 | f + 46 | 2 | t | 19 | f + 47 | 2 | t | 20 | f + 48 | 2 | t | 21 | f + 49 | 2 | t | 22 | f + 50 | 2 | t | 23 | f + 51 | 2 | t | 24 | f + 52 | 2 | t | 25 | f + 53 | 2 | t | 26 | f + 54 | 2 | t | 27 | + 55 | 3 | t | 1 | t + 56 | 3 | t | 2 | t + 57 | 3 | t | 3 | t + 58 | 3 | t | 4 | t + 59 | 3 | t | 5 | t + 60 | 3 | t | 6 | t + 61 | 3 | t | 7 | t + 62 | 3 | t | 8 | t + 63 | 3 | t | 9 | t + 64 | 3 | t | 10 | t + 65 | 3 | t | 11 | t + 66 | 3 | t | 12 | t + 67 | 3 | t | 13 | t + 68 | 3 | t | 14 | f + 69 | 3 | t | 15 | f + 70 | 3 | t | 16 | f + 71 | 3 | t | 17 | f + 72 | 3 | t | 18 | f + 73 | 3 | t | 19 | f + 74 | 3 | t | 20 | f + 75 | 3 | t | 21 | f + 76 | 3 | t | 22 | f + 77 | 3 | t | 23 | f + 78 | 3 | t | 24 | f + 79 | 3 | t | 25 | f + 80 | 3 | t | 26 | f + 81 | 3 | t | 27 | + 82 | 4 | t | 1 | t + 83 | 4 | t | 2 | t + 84 | 4 | t | 3 | t + 85 | 4 | t | 4 | t + 86 | 4 | t | 5 | t + 87 | 4 | t | 6 | t + 88 | 4 | t | 7 | t + 89 | 4 | t | 8 | t + 90 | 4 | t | 9 | t + 91 | 4 | t | 10 | t + 92 | 4 | t | 11 | t + 93 | 4 | t | 12 | t + 94 | 4 | t | 13 | t + 95 | 4 | t | 14 | f + 96 | 4 | t | 15 | f + 97 | 4 | t | 16 | f + 98 | 4 | t | 17 | f + 99 | 4 | t | 18 | f + 100 | 4 | t | 19 | f + 101 | 4 | t | 20 | f + 102 | 4 | t | 21 | f + 103 | 4 | t | 22 | f + 104 | 4 | t | 23 | f + 105 | 4 | t | 24 | f + 106 | 4 | t | 25 | f + 107 | 4 | t | 26 | f + 108 | 4 | t | 27 | + 109 | 5 | t | 1 | t + 110 | 5 | t | 2 | t + 111 | 5 | t | 3 | t + 112 | 5 | t | 4 | t + 113 | 5 | t | 5 | t + 114 | 5 | t | 6 | t + 115 | 5 | t | 7 | t + 116 | 5 | t | 8 | t + 117 | 5 | t | 9 | t + 118 | 5 | t | 10 | t + 119 | 5 | t | 11 | t + 120 | 5 | t | 12 | t + 121 | 5 | t | 13 | t + 122 | 5 | t | 14 | f + 123 | 5 | t | 15 | f + 124 | 5 | t | 16 | f + 125 | 5 | t | 17 | f + 126 | 5 | t | 18 | f + 127 | 5 | t | 19 | f + 128 | 5 | t | 20 | f + 129 | 5 | t | 21 | f + 130 | 5 | t | 22 | f + 131 | 5 | t | 23 | f + 132 | 5 | t | 24 | f + 133 | 5 | t | 25 | f + 134 | 5 | t | 26 | f + 135 | 5 | t | 27 | + 136 | 6 | t | 1 | t + 137 | 6 | t | 2 | t + 138 | 6 | t | 3 | t + 139 | 6 | t | 4 | t + 140 | 6 | t | 5 | t + 141 | 6 | t | 6 | t + 142 | 6 | t | 7 | t + 143 | 6 | t | 8 | t + 144 | 6 | t | 9 | t + 145 | 6 | t | 10 | t + 146 | 6 | t | 11 | t + 147 | 6 | t | 12 | t + 148 | 6 | t | 13 | t + 149 | 6 | t | 14 | f + 150 | 6 | t | 15 | f + 151 | 6 | t | 16 | f + 152 | 6 | t | 17 | f + 153 | 6 | t | 18 | f + 154 | 6 | t | 19 | f + 155 | 6 | t | 20 | f + 156 | 6 | t | 21 | f + 157 | 6 | t | 22 | f + 158 | 6 | t | 23 | f + 159 | 6 | t | 24 | f + 160 | 6 | t | 25 | f + 161 | 6 | t | 26 | f + 162 | 6 | t | 27 | + 163 | 7 | t | 1 | t + 164 | 7 | t | 2 | t + 165 | 7 | t | 3 | t + 166 | 7 | t | 4 | t + 167 | 7 | t | 5 | t + 168 | 7 | t | 6 | t + 169 | 7 | t | 7 | t + 170 | 7 | t | 8 | t + 171 | 7 | t | 9 | t + 172 | 7 | t | 10 | t + 173 | 7 | t | 11 | t + 174 | 7 | t | 12 | t + 175 | 7 | t | 13 | t + 176 | 7 | t | 14 | f + 177 | 7 | t | 15 | f + 178 | 7 | t | 16 | f + 179 | 7 | t | 17 | f + 180 | 7 | t | 18 | f + 181 | 7 | t | 19 | f + 182 | 7 | t | 20 | f + 183 | 7 | t | 21 | f + 184 | 7 | t | 22 | f + 185 | 7 | t | 23 | f + 186 | 7 | t | 24 | f + 187 | 7 | t | 25 | f + 188 | 7 | t | 26 | f + 189 | 7 | t | 27 | + 190 | 8 | t | 1 | t + 191 | 8 | t | 2 | t + 192 | 8 | t | 3 | t + 193 | 8 | t | 4 | t + 194 | 8 | t | 5 | t + 195 | 8 | t | 6 | t + 196 | 8 | t | 7 | t + 197 | 8 | t | 8 | t + 198 | 8 | t | 9 | t + 199 | 8 | t | 10 | t + 200 | 8 | t | 11 | t + 201 | 8 | t | 12 | t + 202 | 8 | t | 13 | t + 203 | 8 | t | 14 | f + 204 | 8 | t | 15 | f + 205 | 8 | t | 16 | f + 206 | 8 | t | 17 | f + 207 | 8 | t | 18 | f + 208 | 8 | t | 19 | f + 209 | 8 | t | 20 | f + 210 | 8 | t | 21 | f + 211 | 8 | t | 22 | f + 212 | 8 | t | 23 | f + 213 | 8 | t | 24 | f + 214 | 8 | t | 25 | f + 215 | 8 | t | 26 | f + 216 | 8 | t | 27 | + 217 | 9 | t | 1 | t + 218 | 9 | t | 2 | t + 219 | 9 | t | 3 | t + 220 | 9 | t | 4 | t + 221 | 9 | t | 5 | t + 222 | 9 | t | 6 | t + 223 | 9 | t | 7 | t + 224 | 9 | t | 8 | t + 225 | 9 | t | 9 | t + 226 | 9 | t | 10 | t + 227 | 9 | t | 11 | t + 228 | 9 | t | 12 | t + 229 | 9 | t | 13 | t + 230 | 9 | t | 14 | f + 231 | 9 | t | 15 | f + 232 | 9 | t | 16 | f + 233 | 9 | t | 17 | f + 234 | 9 | t | 18 | f + 235 | 9 | t | 19 | f + 236 | 9 | t | 20 | f + 237 | 9 | t | 21 | f + 238 | 9 | t | 22 | f + 239 | 9 | t | 23 | f + 240 | 9 | t | 24 | f + 241 | 9 | t | 25 | f + 242 | 9 | t | 26 | f + 243 | 9 | t | 27 | + 244 | 10 | t | 1 | t + 245 | 10 | t | 2 | t + 246 | 10 | t | 3 | t + 247 | 10 | t | 4 | t + 248 | 10 | t | 5 | t + 249 | 10 | t | 6 | t + 250 | 10 | t | 7 | t + 251 | 10 | t | 8 | t + 252 | 10 | t | 9 | t + 253 | 10 | t | 10 | t + 254 | 10 | t | 11 | t + 255 | 10 | t | 12 | t + 256 | 10 | t | 13 | t + 257 | 10 | t | 14 | f + 258 | 10 | t | 15 | f + 259 | 10 | t | 16 | f + 260 | 10 | t | 17 | f + 261 | 10 | t | 18 | f + 262 | 10 | t | 19 | f + 263 | 10 | t | 20 | f + 264 | 10 | t | 21 | f + 265 | 10 | t | 22 | f + 266 | 10 | t | 23 | f + 267 | 10 | t | 24 | f + 268 | 10 | t | 25 | f + 269 | 10 | t | 26 | f + 270 | 10 | t | 27 | + 271 | 11 | t | 1 | t + 272 | 11 | t | 2 | t + 273 | 11 | t | 3 | t + 274 | 11 | t | 4 | t + 275 | 11 | t | 5 | t + 276 | 11 | t | 6 | t + 277 | 11 | t | 7 | t + 278 | 11 | t | 8 | t + 279 | 11 | t | 9 | t + 280 | 11 | t | 10 | t + 281 | 11 | t | 11 | t + 282 | 11 | t | 12 | t + 283 | 11 | t | 13 | t + 284 | 11 | t | 14 | f + 285 | 11 | t | 15 | f + 286 | 11 | t | 16 | f + 287 | 11 | t | 17 | f + 288 | 11 | t | 18 | f + 289 | 11 | t | 19 | f + 290 | 11 | t | 20 | f + 291 | 11 | t | 21 | f + 292 | 11 | t | 22 | f + 293 | 11 | t | 23 | f + 294 | 11 | t | 24 | f + 295 | 11 | t | 25 | f + 296 | 11 | t | 26 | f + 297 | 11 | t | 27 | + 298 | 12 | t | 1 | t + 299 | 12 | t | 2 | t + 300 | 12 | t | 3 | t + 301 | 12 | t | 4 | t + 302 | 12 | t | 5 | t + 303 | 12 | t | 6 | t + 304 | 12 | t | 7 | t + 305 | 12 | t | 8 | t + 306 | 12 | t | 9 | t + 307 | 12 | t | 10 | t + 308 | 12 | t | 11 | t + 309 | 12 | t | 12 | t + 310 | 12 | t | 13 | t + 311 | 12 | t | 14 | f + 312 | 12 | t | 15 | f + 313 | 12 | t | 16 | f + 314 | 12 | t | 17 | f + 315 | 12 | t | 18 | f + 316 | 12 | t | 19 | f + 317 | 12 | t | 20 | f + 318 | 12 | t | 21 | f + 319 | 12 | t | 22 | f + 320 | 12 | t | 23 | f + 321 | 12 | t | 24 | f + 322 | 12 | t | 25 | f + 323 | 12 | t | 26 | f + 324 | 12 | t | 27 | + 325 | 13 | t | 1 | t + 326 | 13 | t | 2 | t + 327 | 13 | t | 3 | t + 328 | 13 | t | 4 | t + 329 | 13 | t | 5 | t + 330 | 13 | t | 6 | t + 331 | 13 | t | 7 | t + 332 | 13 | t | 8 | t + 333 | 13 | t | 9 | t + 334 | 13 | t | 10 | t + 335 | 13 | t | 11 | t + 336 | 13 | t | 12 | t + 337 | 13 | t | 13 | t + 338 | 13 | t | 14 | f + 339 | 13 | t | 15 | f + 340 | 13 | t | 16 | f + 341 | 13 | t | 17 | f + 342 | 13 | t | 18 | f + 343 | 13 | t | 19 | f + 344 | 13 | t | 20 | f + 345 | 13 | t | 21 | f + 346 | 13 | t | 22 | f + 347 | 13 | t | 23 | f + 348 | 13 | t | 24 | f + 349 | 13 | t | 25 | f + 350 | 13 | t | 26 | f + 351 | 13 | t | 27 | + 352 | 14 | f | 1 | t + 353 | 14 | f | 2 | t + 354 | 14 | f | 3 | t + 355 | 14 | f | 4 | t + 356 | 14 | f | 5 | t + 357 | 14 | f | 6 | t + 358 | 14 | f | 7 | t + 359 | 14 | f | 8 | t + 360 | 14 | f | 9 | t + 361 | 14 | f | 10 | t + 362 | 14 | f | 11 | t + 363 | 14 | f | 12 | t + 364 | 14 | f | 13 | t + 365 | 14 | f | 14 | f + 366 | 14 | f | 15 | f + 367 | 14 | f | 16 | f + 368 | 14 | f | 17 | f + 369 | 14 | f | 18 | f + 370 | 14 | f | 19 | f + 371 | 14 | f | 20 | f + 372 | 14 | f | 21 | f + 373 | 14 | f | 22 | f + 374 | 14 | f | 23 | f + 375 | 14 | f | 24 | f + 376 | 14 | f | 25 | f + 377 | 14 | f | 26 | f + 378 | 14 | f | 27 | + 379 | 15 | f | 1 | t + 380 | 15 | f | 2 | t + 381 | 15 | f | 3 | t + 382 | 15 | f | 4 | t + 383 | 15 | f | 5 | t + 384 | 15 | f | 6 | t + 385 | 15 | f | 7 | t + 386 | 15 | f | 8 | t + 387 | 15 | f | 9 | t + 388 | 15 | f | 10 | t + 389 | 15 | f | 11 | t + 390 | 15 | f | 12 | t + 391 | 15 | f | 13 | t + 392 | 15 | f | 14 | f + 393 | 15 | f | 15 | f + 394 | 15 | f | 16 | f + 395 | 15 | f | 17 | f + 396 | 15 | f | 18 | f + 397 | 15 | f | 19 | f + 398 | 15 | f | 20 | f + 399 | 15 | f | 21 | f + 400 | 15 | f | 22 | f + 401 | 15 | f | 23 | f + 402 | 15 | f | 24 | f + 403 | 15 | f | 25 | f + 404 | 15 | f | 26 | f + 405 | 15 | f | 27 | + 406 | 16 | f | 1 | t + 407 | 16 | f | 2 | t + 408 | 16 | f | 3 | t + 409 | 16 | f | 4 | t + 410 | 16 | f | 5 | t + 411 | 16 | f | 6 | t + 412 | 16 | f | 7 | t + 413 | 16 | f | 8 | t + 414 | 16 | f | 9 | t + 415 | 16 | f | 10 | t + 416 | 16 | f | 11 | t + 417 | 16 | f | 12 | t + 418 | 16 | f | 13 | t + 419 | 16 | f | 14 | f + 420 | 16 | f | 15 | f + 421 | 16 | f | 16 | f + 422 | 16 | f | 17 | f + 423 | 16 | f | 18 | f + 424 | 16 | f | 19 | f + 425 | 16 | f | 20 | f + 426 | 16 | f | 21 | f + 427 | 16 | f | 22 | f + 428 | 16 | f | 23 | f + 429 | 16 | f | 24 | f + 430 | 16 | f | 25 | f + 431 | 16 | f | 26 | f + 432 | 16 | f | 27 | + 433 | 17 | f | 1 | t + 434 | 17 | f | 2 | t + 435 | 17 | f | 3 | t + 436 | 17 | f | 4 | t + 437 | 17 | f | 5 | t + 438 | 17 | f | 6 | t + 439 | 17 | f | 7 | t + 440 | 17 | f | 8 | t + 441 | 17 | f | 9 | t + 442 | 17 | f | 10 | t + 443 | 17 | f | 11 | t + 444 | 17 | f | 12 | t + 445 | 17 | f | 13 | t + 446 | 17 | f | 14 | f + 447 | 17 | f | 15 | f + 448 | 17 | f | 16 | f + 449 | 17 | f | 17 | f + 450 | 17 | f | 18 | f + 451 | 17 | f | 19 | f + 452 | 17 | f | 20 | f + 453 | 17 | f | 21 | f + 454 | 17 | f | 22 | f + 455 | 17 | f | 23 | f + 456 | 17 | f | 24 | f + 457 | 17 | f | 25 | f + 458 | 17 | f | 26 | f + 459 | 17 | f | 27 | + 460 | 18 | f | 1 | t + 461 | 18 | f | 2 | t + 462 | 18 | f | 3 | t + 463 | 18 | f | 4 | t + 464 | 18 | f | 5 | t + 465 | 18 | f | 6 | t + 466 | 18 | f | 7 | t + 467 | 18 | f | 8 | t + 468 | 18 | f | 9 | t + 469 | 18 | f | 10 | t + 470 | 18 | f | 11 | t + 471 | 18 | f | 12 | t + 472 | 18 | f | 13 | t + 473 | 18 | f | 14 | f + 474 | 18 | f | 15 | f + 475 | 18 | f | 16 | f + 476 | 18 | f | 17 | f + 477 | 18 | f | 18 | f + 478 | 18 | f | 19 | f + 479 | 18 | f | 20 | f + 480 | 18 | f | 21 | f + 481 | 18 | f | 22 | f + 482 | 18 | f | 23 | f + 483 | 18 | f | 24 | f + 484 | 18 | f | 25 | f + 485 | 18 | f | 26 | f + 486 | 18 | f | 27 | + 487 | 19 | f | 1 | t + 488 | 19 | f | 2 | t + 489 | 19 | f | 3 | t + 490 | 19 | f | 4 | t + 491 | 19 | f | 5 | t + 492 | 19 | f | 6 | t + 493 | 19 | f | 7 | t + 494 | 19 | f | 8 | t + 495 | 19 | f | 9 | t + 496 | 19 | f | 10 | t + 497 | 19 | f | 11 | t + 498 | 19 | f | 12 | t + 499 | 19 | f | 13 | t + 500 | 19 | f | 14 | f + 501 | 19 | f | 15 | f + 502 | 19 | f | 16 | f + 503 | 19 | f | 17 | f + 504 | 19 | f | 18 | f + 505 | 19 | f | 19 | f + 506 | 19 | f | 20 | f + 507 | 19 | f | 21 | f + 508 | 19 | f | 22 | f + 509 | 19 | f | 23 | f + 510 | 19 | f | 24 | f + 511 | 19 | f | 25 | f + 512 | 19 | f | 26 | f + 513 | 19 | f | 27 | + 514 | 20 | f | 1 | t + 515 | 20 | f | 2 | t + 516 | 20 | f | 3 | t + 517 | 20 | f | 4 | t + 518 | 20 | f | 5 | t + 519 | 20 | f | 6 | t + 520 | 20 | f | 7 | t + 521 | 20 | f | 8 | t + 522 | 20 | f | 9 | t + 523 | 20 | f | 10 | t + 524 | 20 | f | 11 | t + 525 | 20 | f | 12 | t + 526 | 20 | f | 13 | t + 527 | 20 | f | 14 | f + 528 | 20 | f | 15 | f + 529 | 20 | f | 16 | f + 530 | 20 | f | 17 | f + 531 | 20 | f | 18 | f + 532 | 20 | f | 19 | f + 533 | 20 | f | 20 | f + 534 | 20 | f | 21 | f + 535 | 20 | f | 22 | f + 536 | 20 | f | 23 | f + 537 | 20 | f | 24 | f + 538 | 20 | f | 25 | f + 539 | 20 | f | 26 | f + 540 | 20 | f | 27 | + 541 | 21 | f | 1 | t + 542 | 21 | f | 2 | t + 543 | 21 | f | 3 | t + 544 | 21 | f | 4 | t + 545 | 21 | f | 5 | t + 546 | 21 | f | 6 | t + 547 | 21 | f | 7 | t + 548 | 21 | f | 8 | t + 549 | 21 | f | 9 | t + 550 | 21 | f | 10 | t + 551 | 21 | f | 11 | t + 552 | 21 | f | 12 | t + 553 | 21 | f | 13 | t + 554 | 21 | f | 14 | f + 555 | 21 | f | 15 | f + 556 | 21 | f | 16 | f + 557 | 21 | f | 17 | f + 558 | 21 | f | 18 | f + 559 | 21 | f | 19 | f + 560 | 21 | f | 20 | f + 561 | 21 | f | 21 | f + 562 | 21 | f | 22 | f + 563 | 21 | f | 23 | f + 564 | 21 | f | 24 | f + 565 | 21 | f | 25 | f + 566 | 21 | f | 26 | f + 567 | 21 | f | 27 | + 568 | 22 | f | 1 | t + 569 | 22 | f | 2 | t + 570 | 22 | f | 3 | t + 571 | 22 | f | 4 | t + 572 | 22 | f | 5 | t + 573 | 22 | f | 6 | t + 574 | 22 | f | 7 | t + 575 | 22 | f | 8 | t + 576 | 22 | f | 9 | t + 577 | 22 | f | 10 | t + 578 | 22 | f | 11 | t + 579 | 22 | f | 12 | t + 580 | 22 | f | 13 | t + 581 | 22 | f | 14 | f + 582 | 22 | f | 15 | f + 583 | 22 | f | 16 | f + 584 | 22 | f | 17 | f + 585 | 22 | f | 18 | f + 586 | 22 | f | 19 | f + 587 | 22 | f | 20 | f + 588 | 22 | f | 21 | f + 589 | 22 | f | 22 | f + 590 | 22 | f | 23 | f + 591 | 22 | f | 24 | f + 592 | 22 | f | 25 | f + 593 | 22 | f | 26 | f + 594 | 22 | f | 27 | + 595 | 23 | f | 1 | t + 596 | 23 | f | 2 | t + 597 | 23 | f | 3 | t + 598 | 23 | f | 4 | t + 599 | 23 | f | 5 | t + 600 | 23 | f | 6 | t + 601 | 23 | f | 7 | t + 602 | 23 | f | 8 | t + 603 | 23 | f | 9 | t + 604 | 23 | f | 10 | t + 605 | 23 | f | 11 | t + 606 | 23 | f | 12 | t + 607 | 23 | f | 13 | t + 608 | 23 | f | 14 | f + 609 | 23 | f | 15 | f + 610 | 23 | f | 16 | f + 611 | 23 | f | 17 | f + 612 | 23 | f | 18 | f + 613 | 23 | f | 19 | f + 614 | 23 | f | 20 | f + 615 | 23 | f | 21 | f + 616 | 23 | f | 22 | f + 617 | 23 | f | 23 | f + 618 | 23 | f | 24 | f + 619 | 23 | f | 25 | f + 620 | 23 | f | 26 | f + 621 | 23 | f | 27 | + 622 | 24 | f | 1 | t + 623 | 24 | f | 2 | t + 624 | 24 | f | 3 | t + 625 | 24 | f | 4 | t + 626 | 24 | f | 5 | t + 627 | 24 | f | 6 | t + 628 | 24 | f | 7 | t + 629 | 24 | f | 8 | t + 630 | 24 | f | 9 | t + 631 | 24 | f | 10 | t + 632 | 24 | f | 11 | t + 633 | 24 | f | 12 | t + 634 | 24 | f | 13 | t + 635 | 24 | f | 14 | f + 636 | 24 | f | 15 | f + 637 | 24 | f | 16 | f + 638 | 24 | f | 17 | f + 639 | 24 | f | 18 | f + 640 | 24 | f | 19 | f + 641 | 24 | f | 20 | f + 642 | 24 | f | 21 | f + 643 | 24 | f | 22 | f + 644 | 24 | f | 23 | f + 645 | 24 | f | 24 | f + 646 | 24 | f | 25 | f + 647 | 24 | f | 26 | f + 648 | 24 | f | 27 | + 649 | 25 | f | 1 | t + 650 | 25 | f | 2 | t + 651 | 25 | f | 3 | t + 652 | 25 | f | 4 | t + 653 | 25 | f | 5 | t + 654 | 25 | f | 6 | t + 655 | 25 | f | 7 | t + 656 | 25 | f | 8 | t + 657 | 25 | f | 9 | t + 658 | 25 | f | 10 | t + 659 | 25 | f | 11 | t + 660 | 25 | f | 12 | t + 661 | 25 | f | 13 | t + 662 | 25 | f | 14 | f + 663 | 25 | f | 15 | f + 664 | 25 | f | 16 | f + 665 | 25 | f | 17 | f + 666 | 25 | f | 18 | f + 667 | 25 | f | 19 | f + 668 | 25 | f | 20 | f + 669 | 25 | f | 21 | f + 670 | 25 | f | 22 | f + 671 | 25 | f | 23 | f + 672 | 25 | f | 24 | f + 673 | 25 | f | 25 | f + 674 | 25 | f | 26 | f + 675 | 25 | f | 27 | + 676 | 26 | f | 1 | t + 677 | 26 | f | 2 | t + 678 | 26 | f | 3 | t + 679 | 26 | f | 4 | t + 680 | 26 | f | 5 | t + 681 | 26 | f | 6 | t + 682 | 26 | f | 7 | t + 683 | 26 | f | 8 | t + 684 | 26 | f | 9 | t + 685 | 26 | f | 10 | t + 686 | 26 | f | 11 | t + 687 | 26 | f | 12 | t + 688 | 26 | f | 13 | t + 689 | 26 | f | 14 | f + 690 | 26 | f | 15 | f + 691 | 26 | f | 16 | f + 692 | 26 | f | 17 | f + 693 | 26 | f | 18 | f + 694 | 26 | f | 19 | f + 695 | 26 | f | 20 | f + 696 | 26 | f | 21 | f + 697 | 26 | f | 22 | f + 698 | 26 | f | 23 | f + 699 | 26 | f | 24 | f + 700 | 26 | f | 25 | f + 701 | 26 | f | 26 | f + 702 | 26 | f | 27 | + 703 | 27 | | 1 | t + 704 | 27 | | 2 | t + 705 | 27 | | 3 | t + 706 | 27 | | 4 | t + 707 | 27 | | 5 | t + 708 | 27 | | 6 | t + 709 | 27 | | 7 | t + 710 | 27 | | 8 | t + 711 | 27 | | 9 | t + 712 | 27 | | 10 | t + 713 | 27 | | 11 | t + 714 | 27 | | 12 | t + 715 | 27 | | 13 | t + 716 | 27 | | 14 | f + 717 | 27 | | 15 | f + 718 | 27 | | 16 | f + 719 | 27 | | 17 | f + 720 | 27 | | 18 | f + 721 | 27 | | 19 | f + 722 | 27 | | 20 | f + 723 | 27 | | 21 | f + 724 | 27 | | 22 | f + 725 | 27 | | 23 | f + 726 | 27 | | 24 | f + 727 | 27 | | 25 | f + 728 | 27 | | 26 | f + 729 | 27 | | 27 | +(729 rows) + +--Testcase 60: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 61: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper"; + b1 | b2 | a | o +----+----+---+--- + f | f | f | f + f | t | f | t + f | | f | + t | f | f | t + t | t | t | t + t | | | t + | f | f | + | t | | t + | | | +(9 rows) + +--Testcase 62: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE (sqlite_fdw_bool(`b1`)) AND (sqlite_fdw_bool(`b2`)) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 63: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 AND b2; + b1 | b2 | a | o +----+----+---+--- + t | t | t | t +(1 row) + +--Testcase 64: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Unique + Output: b1, b2, ((b1 AND b2)), ((b1 OR b2)) + -> Foreign Scan on public."type_BOOLEAN_oper" + Output: b1, b2, (b1 AND b2), (b1 OR b2) + SQLite query: SELECT sqlite_fdw_bool(`b1`), sqlite_fdw_bool(`b2`) FROM main."type_BOOLEAN_oper" WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) ORDER BY sqlite_fdw_bool(`b1`) ASC NULLS LAST, sqlite_fdw_bool(`b2`) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) AND sqlite_fdw_bool(`b2`)) ASC NULLS LAST, (sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`)) ASC NULLS LAST +(5 rows) + +--Testcase 65: +SELECT DISTINCT b1, b2, b1 AND b2 a, b1 OR b2 o FROM "type_BOOLEAN_oper" WHERE b1 OR b2; + b1 | b2 | a | o +----+----+---+--- + f | t | f | t + t | f | f | t + t | t | t | t + t | | | t + | t | | t +(5 rows) + +--Testcase 66: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; + QUERY PLAN +----------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = NULL WHERE ((NOT sqlite_fdw_bool(`b1`))) +(3 rows) + +--Testcase 67: +UPDATE "type_BOOLEAN_oper" SET b1 = NULL WHERE NOT b1; +--Testcase 68: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + t | f + t | t + t | + | f + | t + | +(6 rows) + +--Testcase 69: +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; +--Testcase 70: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_BOOLEAN_oper" SET b1 = false WHERE b1 OR b2; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Update on public."type_BOOLEAN_oper" + -> Foreign Update on public."type_BOOLEAN_oper" + SQLite query: UPDATE main."type_BOOLEAN_oper" SET `b1` = 0 WHERE ((sqlite_fdw_bool(`b1`) OR sqlite_fdw_bool(`b2`))) +(3 rows) + +--Testcase 71: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | t + f | + | f + | +(5 rows) + +--Testcase 72: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------- + Delete on public."type_BOOLEAN_oper" + -> Foreign Delete on public."type_BOOLEAN_oper" + SQLite query: DELETE FROM main."type_BOOLEAN_oper" WHERE ((NOT sqlite_fdw_bool(`b1`))) AND (sqlite_fdw_bool(`b2`)) +(3 rows) + +--Testcase 73: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b1 AND b2; +--Testcase 74: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | f + f | + | f + | +(4 rows) + +--Testcase 75: +DELETE FROM "type_BOOLEAN_oper" WHERE NOT b2; +--Testcase 76: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 77: +DELETE FROM "type_BOOLEAN_oper" WHERE b2; +--Testcase 78: +SELECT DISTINCT b1, b2 FROM "type_BOOLEAN_oper"; + b1 | b2 +----+---- + f | + | +(2 rows) + +--Testcase 79: +DELETE FROM "type_BOOLEAN"; +--Testcase 003: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 5 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_BOOLEAN" +drop cascades to foreign table "type_BOOLEAN+" +drop cascades to foreign table "type_BOOLEANpk" +drop cascades to foreign table "type_BOOLEAN_oper" diff --git a/expected/17.0/types/macaddr.out b/expected/17.0/types/macaddr.out new file mode 100644 index 00000000..c87381b4 --- /dev/null +++ b/expected/17.0/types/macaddr.out @@ -0,0 +1,954 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (1, '08:00:2b:01:02:03'); +--Testcase 012: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (2, '08-00-2b-01-02-03'); +--Testcase 013: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (3, '08002b:010203'); +--Testcase 014: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (4, '08002b-010203'); +--Testcase 015: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (5, '0800.2b01.0203'); +--Testcase 016: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (6, '0800-2b01-0203'); +--Testcase 017: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (7, '08002b010203'); +--Testcase 018: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (8, '08:00:2F:01:02:03'); +--Testcase 019: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (9, '08-00-2F-01-02-03'); +--Testcase 020: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (10, '08002F:010203'); +--Testcase 021: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (11, '08002F-010203'); +--Testcase 022: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (12, '0800.2F01.0203'); +--Testcase 023: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (13, '0800-2F01-0203'); +--Testcase 024: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (14, '08002F010203'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (15, decode('08002F010203', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (16, decode('08002b010203', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" TYPE macaddr; +--Testcase 029: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (17, '08:00:2b:01:02:03'); +--Testcase 030: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (18, '08-00-2b-01-02-03'); +--Testcase 031: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (19, '08002b:010203'); +--Testcase 032: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (20, '08002b-010203'); +--Testcase 033: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (21, '0800.2b01.0203'); +--Testcase 034: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (22, '0800-2b01-0203'); +--Testcase 035: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (23, '08002b010203'); +--Testcase 036: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (24, '08:00:2F:01:02:03'); +--Testcase 037: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (25, '08-00-2F-01-02-03'); +--Testcase 038: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (26, '08002F:010203'); +--Testcase 039: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (27, '08002F-010203'); +--Testcase 040: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (28, '0800.2F01.0203'); +--Testcase 041: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (29, '0800-2F01-0203'); +--Testcase 042: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (30, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (31, '08:00:2b:01:02:03'); +--Testcase 046: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (32, '08-00-2b-01-02-03'); +--Testcase 047: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (33, '08002b:010203'); +--Testcase 048: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (34, '08002b-010203'); +--Testcase 049: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (35, '0800.2b01.0203'); +--Testcase 050: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (36, '0800-2b01-0203'); +--Testcase 051: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (37, '08002b010203'); +--Testcase 052: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (38, '08:00:2F:01:02:03'); +--Testcase 053: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (39, '08-00-2F-01-02-03'); +--Testcase 054: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (40, '08002F:010203'); +--Testcase 055: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (41, '08002F-010203'); +--Testcase 056: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (42, '0800.2F01.0203'); +--Testcase 057: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (43, '0800-2F01-0203'); +--Testcase 058: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (44, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (45, '08:00:2b:01:02:03'); +--Testcase 062: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (46, '08-00-2b-01-02-03'); +--Testcase 063: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (47, '08002b:010203'); +--Testcase 064: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (48, '08002b-010203'); +--Testcase 065: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (49, '0800.2b01.0203'); +--Testcase 066: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (50, '0800-2b01-0203'); +--Testcase 067: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (51, '08002b010203'); +--Testcase 068: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (52, '08:00:2F:01:02:03'); +--Testcase 069: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (53, '08-00-2F-01-02-03'); +--Testcase 070: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (54, '08002F:010203'); +--Testcase 071: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (55, '08002F-010203'); +--Testcase 072: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (56, '0800.2F01.0203'); +--Testcase 073: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (57, '0800-2F01-0203'); +--Testcase 074: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR" ("i", "m") VALUES (58, '08002F010203'); + QUERY PLAN +-------------------------------------------------- + Insert on public."type_MACADDR" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03'::macaddr +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR+"( "i" int OPTIONS (key 'true'), "m" macaddr, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR+'); +--Testcase 077: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 16 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 17 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2b:01:02:03'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 6), `t`, `l`, `tx` FROM main."type_MACADDR+" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002b010203)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR+" where "m" = '08:00:2F:01:02:03'; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 8 | 08:00:2f:01:02:03 | text | 17 | 08:00:2F:01:02:03 + 9 | 08:00:2f:01:02:03 | text | 17 | 08-00-2F-01-02-03 + 10 | 08:00:2f:01:02:03 | text | 13 | 08002F:010203 + 11 | 08:00:2f:01:02:03 | text | 13 | 08002F-010203 + 12 | 08:00:2f:01:02:03 | text | 14 | 0800.2F01.0203 + 13 | 08:00:2f:01:02:03 | text | 14 | 0800-2F01-0203 + 14 | 08:00:2f:01:02:03 | text | 12 | 08002F010203 + 15 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 24 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 25 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 26 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 27 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 28 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 29 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 30 | 08:00:2f:01:02:03 | integer | 13 | 8796881617411 + 38 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 39 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 40 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 41 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 42 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 43 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 44 | 08:00:2f:01:02:03 | blob | 6 | \x08 + 52 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 53 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 54 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 55 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 56 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 57 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 + 58 | 08:00:2f:01:02:03 | text | 17 | 08:00:2f:01:02:03 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 15; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010203, 6) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; -- 9527026057731 + QUERY PLAN +---------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010203 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR" WHERE "m" = '08:00:2F:01:02:03'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR" + -> Foreign Delete on public."type_MACADDR" + SQLite query: DELETE FROM main."type_MACADDR" WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08002f010203)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (59, '08:AA:2F:01:02:04'); +--Testcase 108: +SELECT * FROM "type_MACADDR+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------+------+----+------------------- + 59 | 08:aa:2f:01:02:04 | text | 17 | 08:aa:2f:01:02:04 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:05' WHERE "m" = '08:AA:2F:01:02:04'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f010205, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010204)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:05 | text | 17 | 08:aa:2f:01:02:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:03' WHERE "m" = '08:AA:2F:01:02:05'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f010203, 6) WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010205)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 + 16 | 08:aa:2f:01:02:03 | text | 17 | 08:aa:2f:01:02:03 + 17 | 08:aa:2f:01:02:03 | integer | 13 | 9527026057731 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:03 | blob | 6 | \x08/\x01\x02\x03 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR" SET "m" = '08:AA:2F:01:02:02' WHERE "m" = '08:AA:2F:01:02:03'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR" + -> Foreign Update on public."type_MACADDR" + SQLite query: UPDATE main."type_MACADDR" SET `m` = 0x08aa2f010202 WHERE ((sqlite_fdw_macaddr_int(`m`, 6) = 0x08aa2f010203)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR+"; + i | m | t | l | tx +----+-------------------+---------+----+------------------- + 1 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 2 | 08:00:2b:01:02:03 | text | 17 | 08-00-2b-01-02-03 + 3 | 08:00:2b:01:02:03 | text | 13 | 08002b:010203 + 4 | 08:00:2b:01:02:03 | text | 13 | 08002b-010203 + 5 | 08:00:2b:01:02:03 | text | 14 | 0800.2b01.0203 + 6 | 08:00:2b:01:02:03 | text | 14 | 0800-2b01-0203 + 7 | 08:00:2b:01:02:03 | text | 12 | 08002b010203 + 15 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 16 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 17 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 + 18 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 19 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 20 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 21 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 22 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 23 | 08:00:2b:01:02:03 | integer | 13 | 8796814508547 + 31 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 32 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 33 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 34 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 35 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 36 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 37 | 08:00:2b:01:02:03 | blob | 6 | \x08 + 45 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 46 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 47 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 48 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 49 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 50 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 51 | 08:00:2b:01:02:03 | text | 17 | 08:00:2b:01:02:03 + 59 | 08:aa:2f:01:02:02 | integer | 13 | 9527026057730 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (60, '01:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (61, '02:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (62, '03:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (63, '00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (64, '00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (65, '00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (66, '00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (67, '00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR" ("i", "m") VALUES (68, '00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR" ORDER BY "m" ASC; + i | m +----+------------------- + 63 | 00:00:00:00:00:01 + 64 | 00:00:00:00:00:02 + 65 | 00:00:00:00:00:03 + 66 | 00:00:01:00:00:00 + 67 | 00:00:02:00:00:00 + 68 | 00:00:03:00:00:00 + 60 | 01:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 62 | 03:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR" ORDER BY "m" DESC; + i | m +----+------------------- + 62 | 03:00:00:00:00:00 + 61 | 02:00:00:00:00:00 + 60 | 01:00:00:00:00:00 + 68 | 00:00:03:00:00:00 + 67 | 00:00:02:00:00:00 + 66 | 00:00:01:00:00:00 + 65 | 00:00:00:00:00:03 + 64 | 00:00:00:00:00:02 + 63 | 00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDRpk" (col macaddr OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDRpk" VALUES ('01:02:03:04:05:06'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDRpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDRpk" VALUES ('01-02-03-04-05-06'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDRpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDRpk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDRpk"; + col +------------------- + 01:02:03:04:05:06 + 01:02:03:04:05:06 + 01:02:03:04:05:06 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDRpk"; +--no macaddr operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m | '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m & '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m > '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m < '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m = '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m >= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <= '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06' FROM "type_MACADDR"; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR" + Output: (m <> '01:02:03:04:05:06'::macaddr) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 6) FROM main."type_MACADDR" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR" +drop cascades to foreign table "type_MACADDR+" +drop cascades to foreign table "type_MACADDRpk" diff --git a/expected/17.0/types/macaddr8.out b/expected/17.0/types/macaddr8.out new file mode 100644 index 00000000..4d9ea111 --- /dev/null +++ b/expected/17.0/types/macaddr8.out @@ -0,0 +1,955 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); +--Testcase 010: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE text; +--Testcase 011: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (1, '08:00:2b:01:02:03:04:05'); +--Testcase 012: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (2, '08-00-2b-01-02-03-04-05'); +--Testcase 013: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (3, '08002b01:02030405'); +--Testcase 014: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (4, '08002b01-02030405'); +--Testcase 015: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (5, '0800.2b01.0203.0405'); +--Testcase 016: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (6, '0800-2b01-0203-0405'); +--Testcase 017: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (7, '08002b0102030405'); +--Testcase 018: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (8, '08:00:2F:01:02:03:04:05'); +--Testcase 019: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (9, '08-00-2F-01-02-03-04-05'); +--Testcase 020: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (10, '08002F01:02030405'); +--Testcase 021: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (11, '08002F01-02030405'); +--Testcase 022: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (12, '0800.2F01.0203.0405'); +--Testcase 023: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (13, '0800-2F01-0203-0405'); +--Testcase 024: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (14, '08002F0102030405'); +--Testcase 025: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE bytea; +--Testcase 026: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (15, decode('08002F0102030405', 'hex')); +--Testcase 027: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (16, decode('08002b0102030405', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" TYPE macaddr8; +--Testcase 029: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (17, '08:00:2b:01:02:03:04:05'); +--Testcase 030: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (18, '08-00-2b-01-02-03-04-05'); +--Testcase 031: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (19, '08002b01:02030405'); +--Testcase 032: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (20, '08002b01-02030405'); +--Testcase 033: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (21, '0800.2b01.0203.0405'); +--Testcase 034: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (22, '0800-2b01-0203-0405'); +--Testcase 035: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (23, '08002b0102030405'); +--Testcase 036: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (24, '08:00:2F:01:02:03:04:05'); +--Testcase 037: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (25, '08-00-2F-01-02-03-04-05'); +--Testcase 038: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (26, '08002F01:02030405'); +--Testcase 039: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (27, '08002F01-02030405'); +--Testcase 040: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (28, '0800.2F01.0203.0405'); +--Testcase 041: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (29, '0800-2F01-0203-0405'); +--Testcase 042: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); +--Testcase 043: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (30, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 30, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 044: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (ADD column_type 'BLOB'); +--Testcase 045: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (31, '08:00:2b:01:02:03:04:05'); +--Testcase 046: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (32, '08-00-2b-01-02-03-04-05'); +--Testcase 047: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (33, '08002b01:02030405'); +--Testcase 048: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (34, '08002b01-02030405'); +--Testcase 049: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (35, '0800.2b01.0203.0405'); +--Testcase 050: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (36, '0800-2b01-0203-0405'); +--Testcase 051: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (37, '08002b0102030405'); +--Testcase 052: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (38, '08:00:2F:01:02:03:04:05'); +--Testcase 053: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (39, '08-00-2F-01-02-03-04-05'); +--Testcase 054: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (40, '08002F01:02030405'); +--Testcase 055: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (41, '08002F01-02030405'); +--Testcase 056: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (42, '0800.2F01.0203.0405'); +--Testcase 057: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (43, '0800-2F01-0203-0405'); +--Testcase 058: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); +--Testcase 059: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (44, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 44, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 060: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'text'); +--Testcase 061: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (45, '08:00:2b:01:02:03:04:05'); +--Testcase 062: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (46, '08-00-2b-01-02-03-04-05'); +--Testcase 063: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (47, '08002b01:02030405'); +--Testcase 064: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (48, '08002b01-02030405'); +--Testcase 065: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (49, '0800.2b01.0203.0405'); +--Testcase 066: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (50, '0800-2b01-0203-0405'); +--Testcase 067: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (51, '08002b0102030405'); +--Testcase 068: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (52, '08:00:2F:01:02:03:04:05'); +--Testcase 069: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (53, '08-00-2F-01-02-03-04-05'); +--Testcase 070: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (54, '08002F01:02030405'); +--Testcase 071: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (55, '08002F01-02030405'); +--Testcase 072: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (56, '0800.2F01.0203.0405'); +--Testcase 073: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (57, '0800-2F01-0203-0405'); +--Testcase 074: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); +--Testcase 075: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (58, '08002F0102030405'); + QUERY PLAN +--------------------------------------------------------- + Insert on public."type_MACADDR8" + Batch Size: 1 + -> Result + Output: 58, '08:00:2f:01:02:03:04:05'::macaddr8 +(4 rows) + +--Testcase 076: +CREATE FOREIGN TABLE "type_MACADDR8+"( "i" int OPTIONS (key 'true'), "m" macaddr8, "t" text, "l" smallint, "tx" varchar(64)) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8+'); +--Testcase 077: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(58 rows) + +--Testcase 078: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 079: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 080: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 081: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 082: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 083: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 084: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 086: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 16 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 17 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(29 rows) + +--Testcase 087: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2b:01:02:03:04:05'; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8+" + Output: i, m, t, l, tx + SQLite query: SELECT `i`, sqlite_fdw_macaddr_int(`m`, 8), `t`, `l`, `tx` FROM main."type_MACADDR8+" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002b0102030405)) +(3 rows) + +--Testcase 088: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 089: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 090: +SELECT * FROM "type_MACADDR8+" where "m" = '08:00:2F:01:02:03:04:05'; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 8 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2F:01:02:03:04:05 + 9 | 08:00:2f:01:02:03:04:05 | text | 23 | 08-00-2F-01-02-03-04-05 + 10 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01:02030405 + 11 | 08:00:2f:01:02:03:04:05 | text | 17 | 08002F01-02030405 + 12 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800.2F01.0203.0405 + 13 | 08:00:2f:01:02:03:04:05 | text | 19 | 0800-2F01-0203-0405 + 14 | 08:00:2f:01:02:03:04:05 | text | 16 | 08002F0102030405 + 15 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 24 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 25 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 26 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 27 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 28 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 29 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 30 | 08:00:2f:01:02:03:04:05 | integer | 18 | 576512433678648325 + 38 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 39 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 40 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 41 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 42 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 43 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 44 | 08:00:2f:01:02:03:04:05 | blob | 8 | \x08 + 52 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 53 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 54 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 55 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 56 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 57 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 + 58 | 08:00:2f:01:02:03:04:05 | text | 23 | 08:00:2f:01:02:03:04:05 +(29 rows) + +--Testcase 091: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; +--Testcase 092: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 15; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((`i` = 15)) +(3 rows) + +--Testcase 093: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 094: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102030405, 8) WHERE ((`i` = 16)) +(3 rows) + +--Testcase 095: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 16; +--Testcase 096: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102030405 WHERE ((`i` = 17)) +(3 rows) + +--Testcase 098: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "i" = 17; +--Testcase 099: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 100: +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 102: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'integer'); +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 104: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_MACADDR8" WHERE "m" = '08:00:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------- + Delete on public."type_MACADDR8" + -> Foreign Delete on public."type_MACADDR8" + SQLite query: DELETE FROM main."type_MACADDR8" WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08002f0102030405)) +(3 rows) + +--Testcase 106: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 +(30 rows) + +--Testcase 107: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (59, '08:AA:2F:01:02:04:04:05'); +--Testcase 108: +SELECT * FROM "type_MACADDR8+" WHERE "i" = 59; + i | m | t | l | tx +----+-------------------------+------+----+------------------------- + 59 | 08:aa:2f:01:02:04:04:05 | text | 23 | 08:aa:2f:01:02:04:04:05 +(1 row) + +--Testcase 109: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; +--Testcase 110: -- text +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:05:04:05' WHERE "m" = '08:AA:2F:01:02:04:04:05'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_str(0x08aa2f0102050405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102040405)) +(3 rows) + +--Testcase 111: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:05:04:05 | text | 23 | 08:aa:2f:01:02:05:04:05 +(31 rows) + +--Testcase 112: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 113: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; +--Testcase 114: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:03:04:05' WHERE "m" = '08:AA:2F:01:02:05:04:05'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = sqlite_fdw_macaddr_blob(0x08aa2f0102030405, 8) WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102050405)) +(3 rows) + +--Testcase 115: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+--------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 + 16 | 08:aa:2f:01:02:03:04:05 | text | 23 | 08:aa:2f:01:02:03:04:05 + 17 | 08:aa:2f:01:02:03:04:05 | integer | 18 | 624363179719459845 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:03:04:05 | blob | 8 | \x08/\x01\x02\x03\x04\x05 +(31 rows) + +--Testcase 116: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 117: +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; +--Testcase 118: -- BLOB +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_MACADDR8" SET "m" = '08:AA:2F:01:02:02:04:05' WHERE "m" = '08:AA:2F:01:02:03:04:05'; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_MACADDR8" + -> Foreign Update on public."type_MACADDR8" + SQLite query: UPDATE main."type_MACADDR8" SET `m` = 0x08aa2f0102020405 WHERE ((sqlite_fdw_macaddr_int(`m`, 8) = 0x08aa2f0102030405)) +(3 rows) + +--Testcase 119: +SELECT * FROM "type_MACADDR8+"; + i | m | t | l | tx +----+-------------------------+---------+----+------------------------- + 1 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 2 | 08:00:2b:01:02:03:04:05 | text | 23 | 08-00-2b-01-02-03-04-05 + 3 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01:02030405 + 4 | 08:00:2b:01:02:03:04:05 | text | 17 | 08002b01-02030405 + 5 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800.2b01.0203.0405 + 6 | 08:00:2b:01:02:03:04:05 | text | 19 | 0800-2b01-0203-0405 + 7 | 08:00:2b:01:02:03:04:05 | text | 16 | 08002b0102030405 + 15 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 16 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 17 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 + 18 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 19 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 20 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 21 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 22 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 23 | 08:00:2b:01:02:03:04:05 | integer | 18 | 576508035632137221 + 31 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 32 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 33 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 34 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 35 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 36 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 37 | 08:00:2b:01:02:03:04:05 | blob | 8 | \x08 + 45 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 46 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 47 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 48 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 49 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 50 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 51 | 08:00:2b:01:02:03:04:05 | text | 23 | 08:00:2b:01:02:03:04:05 + 59 | 08:aa:2f:01:02:02:04:05 | integer | 18 | 624363179719394309 +(31 rows) + +--Testcase 120: +DELETE FROM "type_MACADDR8"; +--Testcase 121: -- sort test +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 122: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (60, '01:00:00:00:00:00:00:00'); +--Testcase 123: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 124: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (61, '02:00:00:00:00:00:00:00'); +--Testcase 125: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 126: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (62, '03:00:00:00:00:00:00:00'); +--Testcase 127: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 128: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (63, '00:00:00:00:00:00:00:01'); +--Testcase 129: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 130: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (64, '00:00:00:00:00:00:00:02'); +--Testcase 131: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 132: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (65, '00:00:00:00:00:00:00:03'); +--Testcase 133: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'TEXT'); +--Testcase 134: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (66, '00:00:00:00:01:00:00:00'); +--Testcase 135: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'BLOB'); +--Testcase 136: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (67, '00:00:00:00:02:00:00:00'); +--Testcase 137: +ALTER FOREIGN TABLE "type_MACADDR8" ALTER COLUMN "m" OPTIONS (SET column_type 'int'); +--Testcase 138: +INSERT INTO "type_MACADDR8" ("i", "m") VALUES (68, '00:00:00:00:03:00:00:00'); +--Testcase 139: +SELECT * FROM "type_MACADDR8" ORDER BY "m" ASC; + i | m +----+------------------------- + 63 | 00:00:00:00:00:00:00:01 + 64 | 00:00:00:00:00:00:00:02 + 65 | 00:00:00:00:00:00:00:03 + 66 | 00:00:00:00:01:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 62 | 03:00:00:00:00:00:00:00 +(9 rows) + +--Testcase 140: +SELECT * FROM "type_MACADDR8" ORDER BY "m" DESC; + i | m +----+------------------------- + 62 | 03:00:00:00:00:00:00:00 + 61 | 02:00:00:00:00:00:00:00 + 60 | 01:00:00:00:00:00:00:00 + 68 | 00:00:00:00:03:00:00:00 + 67 | 00:00:00:00:02:00:00:00 + 66 | 00:00:00:00:01:00:00:00 + 65 | 00:00:00:00:00:00:00:03 + 64 | 00:00:00:00:00:00:00:02 + 63 | 00:00:00:00:00:00:00:01 +(9 rows) + +--Testcase 150: +CREATE FOREIGN TABLE "type_MACADDR8pk" (col macaddr8 OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 151: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +--Testcase 152: +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 153: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'int'); +--Testcase 154: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 155: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (SET column_type 'text'); +--Testcase 156: NO ERR, but the same semantics! +INSERT INTO "type_MACADDR8pk" VALUES ('01:02:03:04:05:06:07:08'); +--Testcase 157: +ALTER FOREIGN TABLE "type_MACADDR8pk" ALTER COLUMN col OPTIONS (ADD column_type 'BLOB'); +ERROR: option "column_type" provided more than once +--Testcase 158: ERR - primary key +INSERT INTO "type_MACADDR8pk" VALUES ('01-02-03-04-05-06-07-08'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_MACADDR8pk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_MACADDR8pk"(`col`) VALUES (?) +--Testcase 159: +SELECT * FROM "type_MACADDR8pk"; + col +------------------------- + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 + 01:02:03:04:05:06:07:08 +(3 rows) + +--Testcase 160: +DELETE FROM "type_MACADDR8pk"; +--no macaddr8 operators pushing down +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" | '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m | '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" & '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m & '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT ~"m" FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (~ m) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" > '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m > '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" < '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m < '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" = '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m = '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" >= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m >= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" <= '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <= '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "m" != '01:02:03:04:05:06:07:08' FROM "type_MACADDR8"; + QUERY PLAN +--------------------------------------------------------------------------------- + Foreign Scan on public."type_MACADDR8" + Output: (m <> '01:02:03:04:05:06:07:08'::macaddr8) + SQLite query: SELECT sqlite_fdw_macaddr_int(`m`, 8) FROM main."type_MACADDR8" +(3 rows) + +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_MACADDR8" +drop cascades to foreign table "type_MACADDR8+" +drop cascades to foreign table "type_MACADDR8pk" diff --git a/expected/17.0/types/postgis.out b/expected/17.0/types/postgis.out deleted file mode 100644 index 6fa60f26..00000000 --- a/expected/17.0/types/postgis.out +++ /dev/null @@ -1,1746 +0,0 @@ ---Testcase 2: -CREATE EXTENSION sqlite_fdw; ---Testcase 3: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 4: -CREATE EXTENSION postgis; ---Testcase 5: -CREATE EXTENSION postgis_raster; ---Testcase 6: -CREATE EXTENSION postgis_topology; --- TEST GIS DATA FROM UNION ASTRONOMIQUE INTERNATIONAL (国際天文学連合): MARS, Olympus mons ---Testcase 11: -CREATE SCHEMA "♂"; ---Testcase 12: -CREATE TABLE "♂"."テスト" ( - id int4 NULL, - "UAI" varchar(254) NULL, - "⌖" public.geometry(point, 104904) NULL, - geom public.geometry(geometry, 104904) NULL, - "t₀" date NULL, - "class" text NULL, - "URL" varchar(80) NULL -); ---Testcase 13: ETC... -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(991, 'Olympus Mons', 'SRID=104904;POINT (226.19749330952843 18.652758890345698)'::geometry, 'SRID=104904;MULTIPOLYGON (((223.78717231750488 23.3314151763916, 224.22803688049316 23.324007034301758, 224.32436180114746 23.5648136138916, 224.7186985015869 23.593564987182617, 224.79486274719238 23.45737648010254, 225.06530570983887 23.238798141479492, 225.67255210876465 23.437196731567383, 226.2211856842041 23.6611385345459, 226.5472011566162 23.65372657775879, 227.6215763092041 23.435148239135742, 228.19009590148926 23.390283584594727, 228.753023147583 23.24955177307129, 228.90711784362793 23.1943416595459, 229.23219108581543 23.004926681518555, 229.5288143157959 22.75514030456543, 229.87227058410645 22.442903518676758, 230.2469539642334 22.14628028869629, 230.7309169769287 21.927717208862305, 231.30854988098145 21.64670753479004, 231.85495948791504 21.084684371948242, 232.19841957092285 19.88258171081543, 231.88618278503418 18.47752571105957, 231.30854988098145 17.743772506713867, 231.21887397766113 17.218599319458008, 231.17812156677246 16.751802444458008, 230.97346687316895 16.353670120239258, 230.8327350616455 15.947111129760742, 230.62945365905762 15.478002548217773, 230.4574489593506 15.352907180786133, 230.20748329162598 15.29954719543457, 229.99631309509277 15.036508560180664, 229.72586631774902 14.640104293823242, 229.41096305847168 14.377065658569336, 228.98862266540527 14.10291862487793, 228.74040412902832 13.854700088500977, 228.5107135772705 13.83247184753418, 228.31806755065918 13.962137222290039, 227.93990516662598 13.929948806762695, 227.36133766174316 13.883039474487305, 227.04734230041504 13.813947677612305, 226.68895149230957 13.851762771606445, 226.4101276397705 13.839879989624023, 226.06347465515137 13.632848739624023, 225.7766170501709 13.617597579956055, 225.32925987243652 13.481771469116211, 224.76723670959473 13.591054916381836, 224.15838050842285 13.731557846069336, 223.12800407409668 14.106241226196289, 222.39425468444824 14.402864456176758, 221.67611503601074 14.918050765991211, 221.434663772583 15.403280258178711, 221.30129432678223 16.051607131958008, 221.0864200592041 16.410966873168945, 221.09012413024902 16.6591854095459, 221.1975612640381 17.09263801574707, 220.9971103668213 17.32316017150879, 220.75670051574707 17.422361373901367, 220.82338523864746 17.844701766967773, 221.18475532531738 18.073732376098633, 221.3567600250244 18.5584774017334, 221.40367317199707 19.10576820373535, 221.3567600250244 19.90325355529785, 221.42725563049316 20.59361457824707, 221.778959274292 21.40439796447754, 222.34188652038574 22.201879501342773, 223.01658821105957 23.272138595581055, 223.3759479522705 23.668546676635742, 223.3722438812256 23.675954818725586, 223.57600212097168 23.675954818725586, 223.70566749572754 23.542585372924805, 223.78717231750488 23.3314151763916)))'::geometry, '1973-01-01', 'mo', 'http://planetarynames.wr.usgs.gov/Feature/4453'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(248, 'Karzok', 'SRID=104904;POINT (228.262902951161 18.4035270924109)'::geometry, 'SRID=104904;MULTIPOLYGON (((228.269330978394 18.2748584747314, 228.266962051392 18.2748394012451, 228.264589309692 18.2748584747314, 228.26222038269 18.2749156951904, 228.259851455688 18.2750148773193, 228.257482528687 18.2751522064209, 228.255121231079 18.2753276824951, 228.252759933472 18.2755451202393, 228.250402450562 18.2757968902588, 228.248052597046 18.2760906219482, 228.245706558228 18.2764263153076, 228.243368148804 18.2767963409424, 228.241037368774 18.2772083282471, 228.23871421814 18.2776546478271, 228.236398696899 18.2781429290771, 228.234094619751 18.2786655426025, 228.231798171997 18.2792301177979, 228.229513168335 18.2798328399658, 228.227239608765 18.2804698944092, 228.224977493286 18.2811489105225, 228.222726821899 18.2818622589111, 228.220491409302 18.2826137542725, 228.218271255493 18.2833995819092, 228.216066360474 18.2842235565186, 228.213872909546 18.2850856781006, 228.211698532104 18.285982131958, 228.209539413452 18.2869167327881, 228.207399368286 18.2878856658936, 228.205278396606 18.2888889312744, 228.203172683716 18.2899265289307, 228.201089859009 18.2910022735596, 228.199026107788 18.2921085357666, 228.196981430054 18.2932529449463, 228.194959640503 18.2944278717041, 228.192956924438 18.2956371307373, 228.190980911255 18.2968769073486, 228.189023971558 18.2981548309326, 228.187093734741 18.2994594573975, 228.185186386108 18.3007984161377, 228.183305740356 18.3021678924561, 228.181447982788 18.3035678863525, 228.179616928101 18.3050022125244, 228.177812576294 18.3064632415771, 228.176038742065 18.307954788208, 228.174287796021 18.3094730377197, 228.172567367554 18.3110218048096, 228.170873641968 18.3126010894775, 228.16921043396 18.3142032623291, 228.16757774353 18.3158359527588, 228.165975570679 18.3174953460693, 228.164403915405 18.3191814422607, 228.162858963013 18.320894241333, 228.161352157593 18.3226299285889, 228.159872055054 18.3243923187256, 228.158430099487 18.3261775970459, 228.157014846802 18.3279857635498, 228.155637741089 18.3298168182373, 228.154294967651 18.3316707611084, 228.152982711792 18.3335475921631, 228.151708602905 18.3354473114014, 228.150468826294 18.337366104126, 228.149263381958 18.3393039703369, 228.148092269897 18.3412647247314, 228.14695930481 18.343240737915, 228.145864486694 18.3452396392822, 228.144804000854 18.3472537994385, 228.143781661987 18.3492832183838, 228.142793655396 18.3513317108154, 228.141847610474 18.3533954620361, 228.140939712524 18.3554744720459, 228.140066146851 18.3575687408447, 228.139234542847 18.3596782684326, 228.138441085815 18.3617992401123, 228.137685775757 18.3639354705811, 228.136972427368 18.3660831451416, 228.136297225952 18.3682422637939, 228.135660171509 18.3704090118408, 228.135065078735 18.3725872039795, 228.134511947632 18.37477684021, 228.133996963501 18.376974105835, 228.133520126343 18.3791828155518, 228.133085250854 18.3813953399658, 228.132692337036 18.3836154937744, 228.132341384888 18.3858432769775, 228.132028579712 18.3880748748779, 228.131757736206 18.3903102874756, 228.13152885437 18.3925533294678, 228.131341934204 18.39479637146, 228.131196975708 18.3970432281494, 228.131090164185 18.3992938995361, 228.131025314331 18.4015445709229, 228.131002426147 18.4037952423096, 228.131021499634 18.4060459136963, 228.13108253479 18.408296585083, 228.131185531616 18.4105472564697, 228.131326675415 18.4127941131592, 228.131513595581 18.4150371551514, 228.13173866272 18.4172801971436, 228.132005691528 18.4195156097412, 228.132314682007 18.4217510223389, 228.132661819458 18.4239749908447, 228.133054733276 18.4261989593506, 228.13348197937 18.4284114837646, 228.133955001831 18.4306163787842, 228.134466171265 18.4328174591064, 228.135019302368 18.4350070953369, 228.135610580444 18.4371852874756, 228.13624382019 18.4393558502197, 228.136919021606 18.4415149688721, 228.137628555298 18.4436626434326, 228.138380050659 18.4457988739014, 228.13917350769 18.4479236602783, 228.140001296997 18.4500331878662, 228.140871047974 18.452127456665, 228.141775131226 18.4542064666748, 228.142721176147 18.4562740325928, 228.143705368042 18.4583225250244, 228.144723892212 18.460355758667, 228.145784378052 18.4623699188232, 228.146879196167 18.4643688201904, 228.148008346558 18.4663486480713, 228.149175643921 18.4683094024658, 228.150381088257 18.4702472686768, 228.151620864868 18.4721698760986, 228.152894973755 18.4740695953369, 228.154203414917 18.4759464263916, 228.155546188354 18.47780418396, 228.156923294067 18.4796352386475, 228.158334732056 18.4814472198486, 228.159776687622 18.4832363128662, 228.161256790161 18.4849987030029, 228.162763595581 18.4867343902588, 228.164304733276 18.4884471893311, 228.16587638855 18.4901371002197, 228.167478561401 18.4917964935303, 228.169115066528 18.49342918396, 228.170778274536 18.4950351715088, 228.172468185425 18.4966144561768, 228.174192428589 18.4981670379639, 228.175939559937 18.4996891021729, 228.177717208862 18.5011806488037, 228.179521560669 18.5026454925537, 228.181352615356 18.5040760040283, 228.183210372925 18.5054798126221, 228.185094833374 18.5068492889404, 228.187002182007 18.5081920623779, 228.188936233521 18.50950050354, 228.190893173218 18.5107746124268, 228.192869186401 18.5120182037354, 228.194871902466 18.5132274627686, 228.196897506714 18.5144062042236, 228.198942184448 18.5155506134033, 228.201009750366 18.5166568756104, 228.203096389771 18.5177326202393, 228.205202102661 18.5187740325928, 228.207326889038 18.5197811126709, 228.209466934204 18.5207500457764, 228.211629867554 18.5216846466064, 228.213804244995 18.5225811004639, 228.21600151062 18.5234432220459, 228.218210220337 18.5242710113525, 228.220434188843 18.5250568389893, 228.22266960144 18.5258121490479, 228.224924087524 18.5265254974365, 228.227186203003 18.5272045135498, 228.229463577271 18.5278415679932, 228.23175239563 18.5284442901611, 228.234052658081 18.5290088653564, 228.236360549927 18.5295352935791, 228.238679885864 18.5300235748291, 228.241006851196 18.5304698944092, 228.243341445923 18.5308818817139, 228.245683670044 18.5312557220459, 228.248029708862 18.531587600708, 228.250383377075 18.5318813323975, 228.252744674683 18.5321369171143, 228.255109786987 18.5323505401611, 228.257474899292 18.5325298309326, 228.259847640991 18.5326671600342, 228.262216567993 18.5327663421631, 228.26459312439 18.5328235626221, 228.266965866089 18.5328426361084, 228.269342422485 18.5328235626221, 228.271715164185 18.5327625274658, 228.274087905884 18.5326671600342, 228.276456832886 18.5325298309326, 228.278825759888 18.5323505401611, 228.281187057495 18.5321369171143, 228.283548355103 18.5318813323975, 228.285902023315 18.531587600708, 228.288251876831 18.5312519073486, 228.290594100952 18.5308818817139, 228.292928695679 18.5304698944092, 228.295255661011 18.5300197601318, 228.297574996948 18.5295352935791, 228.299882888794 18.5290088653564, 228.302179336548 18.5284442901611, 228.304468154907 18.5278415679932, 228.306745529175 18.5272006988525, 228.309011459351 18.5265254974365, 228.311262130737 18.5258083343506, 228.313501358032 18.5250568389893, 228.315725326538 18.5242671966553, 228.317934036255 18.5234432220459, 228.320127487183 18.5225811004639, 228.322305679321 18.5216808319092, 228.324464797974 18.5207462310791, 228.326608657837 18.5197772979736, 228.328733444214 18.5187702178955, 228.330839157104 18.5177326202393, 228.332925796509 18.5166568756104, 228.334989547729 18.5155467987061, 228.337034225464 18.5144023895264, 228.339059829712 18.5132274627686, 228.341062545776 18.5120143890381, 228.343042373657 18.5107707977295, 228.344995498657 18.5094966888428, 228.346929550171 18.5081882476807, 228.348836898804 18.5068454742432, 228.350721359253 18.5054759979248, 228.352579116821 18.5040721893311, 228.354410171509 18.5026416778564, 228.356214523315 18.5011768341064, 228.357992172241 18.4996852874756, 228.359739303589 18.4981632232666, 228.361463546753 18.4966106414795, 228.363153457642 18.4950313568115, 228.364816665649 18.4934253692627, 228.366449356079 18.491792678833, 228.368055343628 18.4901294708252, 228.369626998901 18.4884433746338, 228.371168136597 18.4867305755615, 228.372674942017 18.4849910736084, 228.374151229858 18.4832286834717, 228.375597000122 18.4814434051514, 228.37700843811 18.4796314239502, 228.378385543823 18.4778003692627, 228.379728317261 18.4759426116943, 228.381036758423 18.4740619659424, 228.38231086731 18.4721660614014, 228.383550643921 18.4702434539795, 228.38475227356 18.4683017730713, 228.385919570923 18.4663410186768, 228.387052536011 18.4643650054932, 228.388147354126 18.462366104126, 228.389204025269 18.4603481292725, 228.390226364136 18.4583187103271, 228.391206741333 18.4562664031982, 228.392152786255 18.4542026519775, 228.393060684204 18.4521198272705, 228.393926620483 18.4500255584717, 228.394758224487 18.4479160308838, 228.395547866821 18.4457950592041, 228.396299362183 18.4436588287354, 228.397012710571 18.4415111541748, 228.39768409729 18.4393520355225, 228.398317337036 18.4371814727783, 228.398908615112 18.4349994659424, 228.399461746216 18.4328098297119, 228.399972915649 18.4306125640869, 228.40044593811 18.4284076690674, 228.400876998901 18.4261913299561, 228.401266098022 18.4239711761475, 228.401613235474 18.4217433929443, 228.401922225952 18.4195117950439, 228.402189254761 18.417272567749, 228.402414321899 18.4150333404541, 228.402597427368 18.4127864837646, 228.402742385864 18.4105396270752, 228.40284538269 18.4082927703857, 228.402902603149 18.406042098999, 228.402921676636 18.403787612915, 228.402898788452 18.4015369415283, 228.402837753296 18.3992862701416, 228.402730941772 18.3970394134521, 228.402585983276 18.3947887420654, 228.402395248413 18.3925457000732, 228.402166366577 18.3903064727783, 228.401895523071 18.3880672454834, 228.401586532593 18.385835647583, 228.401231765747 18.3836116790771, 228.400838851929 18.3813877105713, 228.40040397644 18.3791751861572, 228.399930953979 18.3769702911377, 228.399415969849 18.3747730255127, 228.398859024048 18.3725833892822, 228.398263931274 18.3704051971436, 228.397626876831 18.3682346343994, 228.396951675415 18.3660755157471, 228.396238327026 18.3639316558838, 228.395483016968 18.361795425415, 228.394689559937 18.3596744537354, 228.393857955933 18.3575649261475, 228.392988204956 18.3554706573486, 228.39207649231 18.3533916473389, 228.391130447388 18.3513278961182, 228.390146255493 18.3492794036865, 228.389120101929 18.3472461700439, 228.388063430786 18.3452320098877, 228.386964797974 18.3432369232178, 228.385831832886 18.3412609100342, 228.384660720825 18.3393001556396, 228.383455276489 18.3373622894287, 228.382215499878 18.3354434967041, 228.380941390991 18.3335437774658, 228.379629135132 18.3316669464111, 228.378286361694 18.32981300354, 228.376905441284 18.3279819488525, 228.375494003296 18.3261699676514, 228.374048233032 18.3243846893311, 228.37257194519 18.3226261138916, 228.371061325073 18.3208866119385, 228.369520187378 18.3191776275635, 228.367948532104 18.3174915313721, 228.366346359253 18.3158321380615, 228.364709854126 18.3141994476318, 228.363046646118 18.3125972747803, 228.361356735229 18.3110179901123, 228.359636306763 18.3094692230225, 228.357885360718 18.3079509735107, 228.356107711792 18.3064594268799, 228.354303359985 18.3049983978271, 228.352472305298 18.3035640716553, 228.350618362427 18.3021640777588, 228.348733901978 18.3007946014404, 228.346826553345 18.2994556427002, 228.344896316528 18.2981510162354, 228.342943191528 18.2968769073486, 228.340963363647 18.29563331604, 228.33896446228 18.2944240570068, 228.336938858032 18.293249130249, 228.334897994995 18.2921085357666, 228.332830429077 18.2909984588623, 228.33074760437 18.2899265289307, 228.328645706177 18.2888851165771, 228.3265209198 18.2878818511963, 228.324380874634 18.2869129180908, 228.322221755981 18.285982131958, 228.32004737854 18.2850856781006, 228.31785774231 18.2842235565186, 228.315649032593 18.2833995819092, 228.313428878784 18.2826099395752, 228.311193466187 18.2818584442139, 228.3089427948 18.2811450958252, 228.306684494019 18.2804698944092, 228.304410934448 18.2798290252686, 228.302125930786 18.2792301177979, 228.299829483032 18.2786655426025, 228.297521591187 18.2781391143799, 228.295206069946 18.2776546478271, 228.292882919312 18.2772045135498, 228.290552139282 18.2767963409424, 228.288213729858 18.2764225006104, 228.28586769104 18.2760906219482, 228.283517837524 18.2757968902588, 228.281160354614 18.2755451202393, 228.278802871704 18.2753276824951, 228.276437759399 18.2751522064209, 228.274072647095 18.2750148773193, 228.271703720093 18.2749156951904, 228.269330978394 18.2748584747314)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14144'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(249, 'Pangboche', 'SRID=104904;POINT (226.595873773026 17.2783598670807)'::geometry, 'SRID=104904;MULTIPOLYGON (((226.601442337036 17.1929302215576, 226.599878311157 17.1929187774658, 226.598310470581 17.1929302215576, 226.596746444702 17.1929721832275, 226.595178604126 17.1930370330811, 226.593618392944 17.1931285858154, 226.592054367065 17.1932430267334, 226.590497970581 17.1933879852295, 226.588941574097 17.1935558319092, 226.587385177612 17.193754196167, 226.585836410522 17.1939754486084, 226.58429145813 17.1942195892334, 226.582754135132 17.1944942474365, 226.581216812134 17.1947917938232, 226.57968711853 17.1951160430908, 226.578165054321 17.195463180542, 226.576650619507 17.195837020874, 226.57513999939 17.1962375640869, 226.573637008667 17.1966648101807, 226.572145462036 17.197114944458, 226.570657730103 17.1975879669189, 226.569181442261 17.1980876922607, 226.567712783813 17.1986103057861, 226.566255569458 17.1991596221924, 226.564809799194 17.1997318267822, 226.563371658325 17.2003269195557, 226.561948776245 17.20094871521, 226.56053352356 17.2015933990479, 226.559129714966 17.2022609710693, 226.557741165161 17.2029514312744, 226.556364059448 17.2036647796631, 226.555002212524 17.2044010162354, 226.553651809692 17.2051601409912, 226.552316665649 17.2059421539307, 226.550992965698 17.2067432403564, 226.549688339233 17.2075710296631, 226.54839515686 17.2084178924561, 226.547121047974 17.2092876434326, 226.545862197876 17.2101764678955, 226.544618606567 17.211088180542, 226.543394088745 17.2120189666748, 226.542184829712 17.2129688262939, 226.540990829468 17.2139415740967, 226.539819717407 17.2149333953857, 226.538663864136 17.2159404754639, 226.537527084351 17.2169704437256, 226.536409378052 17.2180194854736, 226.535310745239 17.219087600708, 226.534231185913 17.2201709747314, 226.533174514771 17.2212734222412, 226.532133102417 17.2223949432373, 226.531118392944 17.2235317230225, 226.530118942261 17.2246875762939, 226.529146194458 17.2258586883545, 226.528188705444 17.2270450592041, 226.527257919312 17.2282466888428, 226.526346206665 17.2294635772705, 226.525461196899 17.2306995391846, 226.52459526062 17.2319469451904, 226.523752212524 17.2332057952881, 226.522932052612 17.2344837188721, 226.522138595581 17.2357730865479, 226.521364212036 17.2370738983154, 226.520616531372 17.2383899688721, 226.519891738892 17.2397136688232, 226.519193649292 17.2410526275635, 226.518518447876 17.2424030303955, 226.517869949341 17.2437648773193, 226.517244338989 17.245138168335, 226.516641616821 17.2465190887451, 226.516069412231 17.2479114532471, 226.515520095825 17.2493152618408, 226.514993667603 17.2507228851318, 226.514497756958 17.2521419525146, 226.514024734497 17.253568649292, 226.513578414917 17.2550029754639, 226.513158798218 17.2564449310303, 226.512765884399 17.2578945159912, 226.512399673462 17.2593479156494, 226.512060165405 17.2608089447021, 226.511747360229 17.2622776031494, 226.511461257935 17.2637462615967, 226.511201858521 17.2652225494385, 226.510969161987 17.2667026519775, 226.510766983032 17.2681865692139, 226.510587692261 17.2696743011475, 226.51043510437 17.2711620330811, 226.510313034058 17.2726535797119, 226.510217666626 17.27414894104, 226.510149002075 17.2756404876709, 226.510107040405 17.277135848999, 226.510091781616 17.2786350250244, 226.510103225708 17.2801303863525, 226.510145187378 17.2816257476807, 226.510213851929 17.2831211090088, 226.510305404663 17.2846164703369, 226.510431289673 17.2861080169678, 226.510580062866 17.2875957489014, 226.51075553894 17.289083480835, 226.510957717896 17.2905673980713, 226.511190414429 17.2920475006104, 226.511449813843 17.2935237884521, 226.51173210144 17.2949924468994, 226.512044906616 17.2964611053467, 226.512384414673 17.2979221343994, 226.51275062561 17.2993755340576, 226.513139724731 17.3008251190186, 226.513559341431 17.302267074585, 226.514001846313 17.3037014007568, 226.514474868774 17.3051280975342, 226.514970779419 17.306547164917, 226.515493392944 17.3079586029053, 226.516042709351 17.309362411499, 226.51661491394 17.310754776001, 226.517213821411 17.3121356964111, 226.517839431763 17.3135089874268, 226.518487930298 17.3148708343506, 226.519163131714 17.3162212371826, 226.519861221313 17.3175601959229, 226.520586013794 17.3188877105713, 226.521333694458 17.3202037811279, 226.522104263306 17.3215045928955, 226.522897720337 17.3227939605713, 226.523717880249 17.3240718841553, 226.524557113647 17.3253345489502, 226.525423049927 17.3265819549561, 226.52631187439 17.3278141021729, 226.527219772339 17.3290348052979, 226.528150558472 17.3302364349365, 226.529108047485 17.3314228057861, 226.530080795288 17.3325939178467, 226.531076431274 17.3337497711182, 226.532094955444 17.3348903656006, 226.533132553101 17.3360080718994, 226.53419303894 17.3371143341064, 226.535272598267 17.3381977081299, 226.536371231079 17.3392658233643, 226.537488937378 17.3403148651123, 226.538625717163 17.341344833374, 226.539781570435 17.3423557281494, 226.540952682495 17.3433475494385, 226.542146682739 17.3443202972412, 226.543355941772 17.3452739715576, 226.544580459595 17.3462047576904, 226.545824050903 17.3471164703369, 226.547082901001 17.3480052947998, 226.548360824585 17.3488750457764, 226.549654006958 17.3497219085693, 226.550958633423 17.350549697876, 226.552282333374 17.351354598999, 226.553617477417 17.3521366119385, 226.554967880249 17.3528957366943, 226.55633354187 17.3536319732666, 226.557710647583 17.3543453216553, 226.559099197388 17.3550395965576, 226.560503005981 17.3557071685791, 226.561918258667 17.356351852417, 226.563344955444 17.356969833374, 226.564783096313 17.3575687408447, 226.566232681274 17.3581409454346, 226.56768989563 17.3586902618408, 226.569158554077 17.3592128753662, 226.570634841919 17.359712600708, 226.572122573853 17.3601894378662, 226.573617935181 17.3606395721436, 226.575120925903 17.36106300354, 226.576631546021 17.3614635467529, 226.578149795532 17.361837387085, 226.579675674438 17.3621883392334, 226.581205368042 17.362512588501, 226.58274269104 17.3628101348877, 226.584283828735 17.3630847930908, 226.585828781128 17.3633289337158, 226.587377548218 17.3635501861572, 226.588933944702 17.363748550415, 226.590490341187 17.3639163970947, 226.592050552368 17.3640613555908, 226.593614578247 17.3641757965088, 226.595178604126 17.3642673492432, 226.596746444702 17.3643321990967, 226.598314285278 17.3643741607666, 226.599882125854 17.3643856048584, 226.601449966431 17.3643741607666, 226.603017807007 17.3643321990967, 226.604581832886 17.3642673492432, 226.606145858765 17.3641757965088, 226.607709884644 17.3640613555908, 226.609270095825 17.3639163970947, 226.610830307007 17.3637447357178, 226.612382888794 17.3635501861572, 226.613931655884 17.3633289337158, 226.615480422974 17.3630809783936, 226.617021560669 17.3628101348877, 226.618558883667 17.362512588501, 226.620088577271 17.3621883392334, 226.621610641479 17.361837387085, 226.623128890991 17.3614635467529, 226.624639511108 17.36106300354, 226.626142501831 17.3606395721436, 226.627637863159 17.3601856231689, 226.629125595093 17.359712600708, 226.630601882935 17.3592128753662, 226.632070541382 17.3586902618408, 226.633531570435 17.3581409454346, 226.634977340698 17.3575687408447, 226.636415481567 17.356969833374, 226.637842178345 17.3563480377197, 226.63925743103 17.3557033538818, 226.640661239624 17.3550357818604, 226.642049789429 17.3543453216553, 226.643426895142 17.3536319732666, 226.644792556763 17.3528957366943, 226.646142959595 17.3521327972412, 226.647478103638 17.3513507843018, 226.648801803589 17.3505458831787, 226.650110244751 17.3497219085693, 226.651399612427 17.3488750457764, 226.652677536011 17.3480052947998, 226.653936386108 17.3471126556396, 226.655179977417 17.3462009429932, 226.656408309937 17.3452701568604, 226.65761756897 17.3443202972412, 226.658807754517 17.3433475494385, 226.659982681274 17.3423557281494, 226.661138534546 17.341344833374, 226.662275314331 17.3403148651123, 226.66339302063 17.3392658233643, 226.664487838745 17.3381977081299, 226.665567398071 17.3371105194092, 226.666627883911 17.3360080718994, 226.667665481567 17.3348865509033, 226.668684005737 17.3337459564209, 226.669679641724 17.3325939178467, 226.670656204224 17.3314228057861, 226.67160987854 17.3302326202393, 226.672540664673 17.3290309906006, 226.673448562622 17.3278141021729, 226.674337387085 17.3265781402588, 226.675203323364 17.3253307342529, 226.676042556763 17.324068069458, 226.676862716675 17.3227939605713, 226.677656173706 17.3215007781982, 226.678426742554 17.3201999664307, 226.679174423218 17.318883895874, 226.679899215698 17.3175563812256, 226.680597305298 17.3162174224854, 226.681272506714 17.3148670196533, 226.681921005249 17.3135051727295, 226.682546615601 17.3121318817139, 226.683145523071 17.3107509613037, 226.683717727661 17.3093585968018, 226.684267044067 17.307954788208, 226.684789657593 17.3065433502197, 226.685285568237 17.3051242828369, 226.685754776001 17.3036975860596, 226.686201095581 17.3022632598877, 226.686616897583 17.3008213043213, 226.687009811401 17.2993717193604, 226.687376022339 17.2979183197021, 226.687715530396 17.2964572906494, 226.688024520874 17.2949886322021, 226.688310623169 17.2935199737549, 226.688570022583 17.2920436859131, 226.688798904419 17.290563583374, 226.689004898071 17.2890796661377, 226.689180374146 17.2875919342041, 226.689329147339 17.2861042022705, 226.689451217651 17.2846126556396, 226.689546585083 17.2831172943115, 226.689615249634 17.2816219329834, 226.689653396606 17.2801265716553, 226.689668655396 17.2786312103271, 226.689653396606 17.277135848999, 226.689611434937 17.2756366729736, 226.689542770386 17.2741451263428, 226.689443588257 17.2726497650146, 226.689321517944 17.2711582183838, 226.689168930054 17.2696704864502, 226.688993453979 17.2681827545166, 226.688787460327 17.2666988372803, 226.688554763794 17.2652187347412, 226.68829536438 17.2637424468994, 226.688009262085 17.2622737884521, 226.687696456909 17.2608051300049, 226.687356948853 17.2593441009521, 226.686990737915 17.2578907012939, 226.686597824097 17.256441116333, 226.686178207397 17.2549991607666, 226.685731887817 17.2535648345947, 226.685258865356 17.2521381378174, 226.684762954712 17.2507190704346, 226.684236526489 17.2493114471436, 226.683687210083 17.2479076385498, 226.683115005493 17.2465152740479, 226.682512283325 17.2451343536377, 226.681886672974 17.2437610626221, 226.681238174438 17.2424030303955, 226.680562973022 17.2410526275635, 226.679864883423 17.2397136688232, 226.679140090942 17.2383861541748, 226.678392410278 17.2370700836182, 226.677618026733 17.2357692718506, 226.676824569702 17.2344799041748, 226.67600440979 17.2332057952881, 226.675161361694 17.2319431304932, 226.674295425415 17.2306957244873, 226.673410415649 17.2294635772705, 226.672498703003 17.2282428741455, 226.671564102173 17.2270412445068, 226.670610427856 17.2258548736572, 226.669637680054 17.2246837615967, 226.66863822937 17.2235317230225, 226.6676197052 17.22239112854, 226.666582107544 17.2212734222412, 226.665525436401 17.2201709747314, 226.664445877075 17.2190837860107, 226.663347244263 17.2180194854736, 226.662229537964 17.2169704437256, 226.661092758179 17.2159404754639, 226.659936904907 17.2149295806885, 226.658761978149 17.2139377593994, 226.657571792603 17.2129650115967, 226.656362533569 17.2120151519775, 226.655138015747 17.2110843658447, 226.653894424438 17.2101726531982, 226.652635574341 17.2092838287354, 226.651357650757 17.2084140777588, 226.650068283081 17.2075672149658, 226.648759841919 17.2067432403564, 226.647439956665 17.2059383392334, 226.646104812622 17.2051563262939, 226.64475440979 17.2043972015381, 226.643388748169 17.2036609649658, 226.642011642456 17.2029476165771, 226.640623092651 17.2022571563721, 226.639223098755 17.2015895843506, 226.637807846069 17.2009449005127, 226.636381149292 17.2003269195557, 226.63494682312 17.1997318267822, 226.633497238159 17.1991558074951, 226.632040023804 17.1986103057861, 226.630575180054 17.1980838775635, 226.629095077515 17.1975879669189, 226.627611160278 17.1971111297607, 226.62611579895 17.1966609954834, 226.624616622925 17.1962375640869, 226.623106002808 17.195837020874, 226.621587753296 17.195463180542, 226.620065689087 17.1951160430908, 226.618535995483 17.1947917938232, 226.617002487183 17.1944942474365, 226.615461349487 17.1942195892334, 226.613916397095 17.1939716339111, 226.612367630005 17.1937503814697, 226.610815048218 17.1935558319092, 226.609258651733 17.1933879852295, 226.607698440552 17.1932430267334, 226.60613822937 17.1931285858154, 226.604574203491 17.1930370330811, 226.603010177612 17.1929721832275, 226.601442337036 17.1929302215576)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14145'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(301, 'Nix Olympica', 'SRID=104904;POINT (230 19.7835659606)'::geometry, NULL, '1958-01-01', 'al', 'http://planetarynames.wr.usgs.gov/Feature/4314'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1849, 'Hermes Patera', 'SRID=104904;POINT (226.57 18.33)'::geometry, 'SRID=104904;POLYGON ((226.27743530274 18.067016601562, 226.25820922852 18.135681152343, 226.255462646485 18.216705322265124, 226.26507568359813 18.293609619139627, 226.25614929199594 18.331375122069314, 226.26095581055 18.369140624999, 226.28842163086 18.465270996093, 226.35159301758 18.528442382812, 226.44772338867 18.577880859374, 226.48480224609438 18.594360351561626, 226.52462768555 18.6026000976555, 226.57955932617 18.608093261718, 226.68118286133 18.586120605468, 226.70590209961 18.569641113281, 226.74435424805 18.539428710937, 226.78555297852 18.514709472656, 226.83224487305 18.498229980468, 226.86932373046687 18.488616943359126, 226.89404296875 18.4721374511715, 226.90090942383 18.451538085937, 226.90640258789 18.410339355468, 226.91189575195 18.380126953124, 226.92013549805 18.322448730468, 226.90640258789 18.251037597656, 226.87344360352 18.187866210937, 226.82949829102 18.146667480468, 226.79379272461 18.113708496093, 226.77456665039 18.102722167968, 226.72787475586 18.119201660156, 226.68392944336 18.141174316406, 226.63723754883125 18.15490722656175, 226.58779907226562 18.14254760742125, 226.56033325195 18.121948242187, 226.52188110352 18.088989257812, 226.48617553711 18.067016601562, 226.45321655274 18.083496093749, 226.38729858399 18.086242675781, 226.32412719727 18.078002929687, 226.27743530274 18.067016601562))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15690'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1688, 'Olympus Rupes', 'SRID=104904;POINT (226.43548539543502 18.401964175317982)'::geometry, 'SRID=104904;MULTILINESTRING ((227.42951774597168 22.934080123901367, 227.93671226501465 22.65593910217285, 228.34573936462402 22.4268856048584, 228.52571296691895 22.295995712280273, 228.67296028137207 22.099660873413086, 228.96746253967285 22.099660873413086, 229.62190437316895 21.739717483520508, 230.1290988922119 21.477941513061523, 230.35815620422363 21.26524543762207, 230.38258171081543 21.086992263793945, 230.2117748260498 20.55558967590332, 230.71787071228027 19.182798385620117, 230.8653507232666 18.500219345092773, 230.8653507232666 18.058469772338867, 230.8653507232666 17.96030616760254, 230.88171195983887 16.978639602661133, 230.9144344329834 16.635053634643555, 230.73446083068848 16.389638900756836, 230.6690158843994 16.242387771606445, 230.55448722839355 15.980611801147461, 230.45632362365723 15.816999435424805, 230.35815620422363 15.506139755249023, 230.0472927093506 15.457056045532227, 229.83220100402832 15.140348434448242, 229.54010200500488 14.73716926574707, 229.22923851013184 14.442667007446289, 228.86929512023926 14.213613510131836, 228.5420742034912 14.05000114440918, 228.2148494720459 14.148168563842773, 227.8221836090088 14.148168563842773, 227.2168254852295 13.984556198120117, 226.85687828063965 13.968194961547852, 226.49693489074707 14.05000114440918, 226.0879077911377 13.77186393737793, 225.80977058410645 13.755502700805664, 225.55567741394043 13.881429672241211, 225.3911952972412 14.058565139770508, 224.9426326751709 14.73716926574707, 224.76265907287598 14.73716926574707, 224.36999320983887 14.573556900024414, 223.97732734680176 14.802610397338867, 223.29015922546387 15.12983512878418, 222.70116233825684 15.391611099243164, 222.4393825531006 15.40797233581543, 221.93218803405762 15.40797233581543, 221.57224464416504 15.66975212097168, 221.4413547515869 16.09514045715332, 221.3431911468506 16.700498580932617, 221.39227104187012 17.07680320739746, 221.16321754455566 17.404027938842773, 220.89009284973145 17.53165626525879, 220.90144157409668 17.84577751159668, 221.14274787902832 17.76296043395996, 221.52316093444824 17.61672019958496, 221.86674308776855 18.074831008911133, 222.06307792663574 18.614748001098633, 221.8994655609131 18.860166549682617, 221.6376895904541 19.252832412719727, 221.62132835388184 19.59641456604004, 221.7358570098877 20.185415267944336, 221.94854927062988 20.774412155151367, 222.079439163208 21.26524543762207, 222.48846626281738 21.854246139526367, 222.99566078186035 22.508691787719727, 223.43741035461426 22.934080123901367, 223.78099250793457 23.13041114807129, 224.04277229309082 23.064966201782227, 224.3045482635498 22.999521255493164, 224.72993659973145 22.934080123901367, 224.9917163848877 22.88499641418457, 225.2862148284912 22.934080123901367, 225.72796440124512 23.01588249206543, 226.2351589202881 23.146772384643555, 226.61146354675293 23.27766227722168, 227.05321311950684 23.097688674926758, 227.42951774597168 22.934080123901367))'::geometry, '1976-01-01', 'ru', 'http://planetarynames.wr.usgs.gov/Feature/4454'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1847, 'Zeus Patera', 'SRID=104904;POINT (227.07 18.39)'::geometry, 'SRID=104904;POLYGON ((226.50457763673 18.675384521485, 226.51556396485 18.70834350586, 226.55401611329 18.766021728516, 226.6254272461 18.820953369141, 226.71881103516 18.853912353516, 226.82043457032 18.886871337891, 226.91107177735 18.886871337891, 226.99621582032 18.875885009766, 227.03741455079 18.873138427735, 226.99346923829 18.831939697266, 226.97973632813 18.77426147461, 226.99896240235 18.702850341797, 227.06213378907 18.631439208985, 227.15002441407 18.584747314454, 227.23516845704 18.568267822266, 227.30383300781875 18.59024047851625, 227.33404541016 18.628692626954, 227.34503173829 18.658905029297, 227.39721679688 18.587493896485, 227.42742919923 18.494110107422, 227.42193603516 18.408966064454, 227.39996337891 18.315582275391, 227.39172363282 18.227691650391, 227.34228515626 18.123321533204, 227.29559326173 18.018951416016, 227.21319580079 17.942047119141, 227.15551757813 17.903594970704, 227.09783935548 17.876129150391, 227.00170898438 17.845916748047, 226.9330444336 17.840423583985, 226.88635253907 17.840423583985, 226.90832519532 17.876129150391, 226.91381835938 17.925567626954, 226.90283203126 17.972259521485, 226.87536621094 18.021697998047, 226.82318115235 18.062896728516, 226.77923583985 18.098602294922, 226.83691406251 18.156280517579, 226.88360595704 18.233184814454, 226.91107177735 18.315582275391, 226.8890991211 18.40072631836, 226.88085937501 18.474884033204, 226.83142089844 18.507843017579, 226.72430419923 18.546295166016, 226.67761230469 18.584747314454, 226.6254272461 18.614959716797, 226.58972167969 18.617706298829, 226.62817382813 18.645172119141, 226.67761230469 18.650665283204, 226.61993408204 18.661651611329, 226.56500244141 18.64242553711, 226.4935913086 18.653411865235, 226.50457763673 18.675384521485))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15689'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1848, 'Athena Patera', 'SRID=104904;POINT (227.18 18.74)'::geometry, 'SRID=104904;POLYGON ((227.0290374756 18.766021728515, 227.04002380372 18.807220458984, 227.06062316896 18.840179443359, 227.08259582521 18.867645263671, 227.12928771974 18.880004882812, 227.17597961427 18.877258300781, 227.22541809083 18.866271972656, 227.28172302247 18.825073242187, 227.31605529786 18.775634765624, 227.328414917 18.731689453124, 227.33116149903 18.691864013671, 227.30369567872 18.656158447265, 227.2844696045 18.619079589843, 227.23915100099 18.599853515624, 227.18147277833 18.599853515624, 227.10594177247 18.624572753906, 227.05513000489 18.665771484374, 227.02491760255 18.705596923828, 227.0207977295 18.744049072265, 227.0290374756 18.766021728515))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15693'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1850, 'Apollo Patera', 'SRID=104904;POINT (226.45 17.94)'::geometry, 'SRID=104904;POLYGON ((226.28540039064 17.909774780272, 226.27441406252 17.938613891601, 226.26754760744 17.981185913085, 226.27716064455 18.027877807616, 226.30325317385 18.074569702147, 226.35818481447 18.091049194335, 226.40075683596 18.091049194335, 226.46804809572 18.073196411132, 226.52572631838 18.045730590819, 226.56967163088 18.023757934569, 226.63146972658 17.946853637694, 226.63558959963 17.878189086913, 226.62185668947 17.83836364746, 226.61911010744 17.806777954101, 226.59439086916 17.788925170897, 226.52847290041 17.780685424804, 226.45980834963 17.808151245116, 226.40899658205 17.832870483397, 226.37878417971 17.841110229491, 226.33758544924 17.864456176757, 226.30462646486 17.887802124022, 226.28540039064 17.909774780272))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15694'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1851, 'Olympus Paterae', 'SRID=104904;POINT (226.81 18.32)'::geometry, 'SRID=104904;POLYGON ((226.14367675781 18.452911376953, 226.16564941406 18.513336181641, 226.2041015625 18.554534912109, 226.23431396484 18.592987060547, 226.30572509766 18.625946044922, 226.36889648438 18.650665283203, 226.42108154297 18.653411865234, 226.45678710938 18.642425537109, 226.49249267578 18.700103759766, 226.54193115234 18.755035400391, 226.58312988281 18.809967041016, 226.65454101563 18.845672607422, 226.72320556641 18.870391845703, 226.82757568359 18.895111083984, 226.88525390625 18.911590576172, 226.96545410157 18.900604248046, 227.0121459961 18.900604248046, 227.04785156251 18.889617919921, 227.08355712891 18.906097412109, 227.13299560548 18.917083740234, 227.21813964844 18.911590576171, 227.28405761719 18.875885009765, 227.33349609376 18.829193115234, 227.37194824219 18.771514892578, 227.37744140626 18.735809326171, 227.38156127930375 18.711776733397812, 227.3808746337928 18.69255065917931, 227.37469482423 18.675384521484, 227.40216064454 18.620452880859, 227.43237304688 18.571014404296, 227.4515991211 18.496856689453, 227.45709228516 18.441925048828, 227.44885253907 18.38150024414, 227.44061279298 18.323822021484, 227.43237304688 18.277130126953, 227.41589355469 18.202972412109, 227.38018798829 18.120574951171, 227.34448242188 18.05191040039, 227.31701660157 17.999725341796, 227.26757812501 17.950286865234, 227.22088623048 17.911834716796, 227.17419433594 17.870635986328, 227.12475585938 17.848663330078, 227.03686523438 17.821197509765, 226.97918701173 17.801971435546, 226.88580322266 17.815704345703, 226.85009765626 17.790985107421, 226.81439208985 17.769012451171, 226.7484741211 17.741546630859, 226.68530273438 17.733306884765, 226.62762451173 17.738800048828, 226.57543945313 17.736053466796, 226.50128173829 17.72232055664, 226.39416503907 17.758026123046, 226.32550048829 17.78823852539, 226.29803466798 17.823944091796, 226.27056884766 17.843170166015, 226.21289062501 17.89810180664, 226.20465087891 17.966766357421, 226.22937011719 18.035430908203, 226.20465087891 18.084869384765, 226.18267822266 18.13980102539, 226.17169189454 18.18374633789, 226.17993164063 18.20571899414, 226.15795898438 18.252410888671, 226.13873291016 18.318328857421, 226.13049316407 18.389739990234, 226.14367675781 18.452911376953))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15695'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1870, 'Dionysus Patera', 'SRID=104904;POINT (226.77 17.96)'::geometry, 'SRID=104904;POLYGON ((226.53973388672 18.046417236328, 226.564453125 18.082122802735, 226.60015869141 18.11508178711, 226.64410400391 18.134307861328, 226.71826171875 18.117828369141, 226.77868652344 18.09310913086, 226.83361816406 18.043670654297, 226.87756347656 17.988739013672, 226.89129638672 17.936553955078, 226.8720703125 17.870635986328, 226.828125 17.82943725586, 226.7484741211 17.799224853516, 226.68530273438 17.793731689453, 226.64959716797 17.78549194336, 226.61389160156 17.782745361328, 226.63037109375 17.848663330078, 226.63037109375 17.914581298828, 226.62213134766 17.972259521485, 226.58093261719 18.021697998047, 226.53973388672 18.046417236328))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15692'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1871, 'Hera Patera', 'SRID=104904;POINT (226.23 18.45)'::geometry, 'SRID=104904;POLYGON ((226.21000671387 18.244171142578, 226.18116760254063 18.30047607421875, 226.17567443848188 18.347167968749623, 226.17155456543125 18.41445922851525, 226.19902038575 18.489990234375377, 226.24021911621563 18.549041748046875, 226.32124328613438 18.602600097655873, 226.37892150879125 18.616333007812376, 226.44209289551 18.61083984375, 226.396774292 18.582000732422, 226.3610687255875 18.55316162109375, 226.31986999512 18.511962890625, 226.2827911377 18.474884033203, 226.27043151856 18.428192138672, 226.24845886231 18.367767333984, 226.24021911621 18.21533203125, 226.21000671387 18.244171142578))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15691'); --- TEST GIS DATA FROM OPENSTREETMAP: EARTH, Ancienne Sylvie ---Testcase 14: -CREATE TABLE "♁" ( - geom public.geometry NOT NULL, - osm_type varchar(16) NOT NULL, - osm_id int8 NOT NULL, - ver int2 NOT NULL, - arr _int8 NULL, - t json NULL -); ---Testcase 15: ETC... -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4596087 59.6907755)'::geometry, 'node', 1621246531, 4, NULL, '{"drain":"disperse"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601391 59.6904673)'::geometry, 'node', 1621246620, 24, NULL, '{"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617098 59.6910199)'::geometry, 'node', 1632220259, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617672 59.6909141)'::geometry, 'node', 1632220283, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461757 59.6909696)'::geometry, 'node', 1632220292, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614802 59.6907676)'::geometry, 'node', 1632220315, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615866 59.6907823)'::geometry, 'node', 1632220319, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611444 59.6908848)'::geometry, 'node', 1632220350, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611916 59.6908345)'::geometry, 'node', 1632220355, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.46127 59.6907954)'::geometry, 'node', 1632220358, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611342 59.6909402)'::geometry, 'node', 1632220359, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614212 59.6910868)'::geometry, 'node', 1632220364, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611621 59.6909941)'::geometry, 'node', 1632220366, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616766 59.6908145)'::geometry, 'node', 1632220378, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616314 59.691059)'::geometry, 'node', 1632220590, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613148 59.6910721)'::geometry, 'node', 1632220686, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613385 59.6907988)'::geometry, 'node', 1632497609, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614438 59.6907856)'::geometry, 'node', 1632497610, 30, NULL, '{"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461244 59.690833)'::geometry, 'node', 1632497611, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617227 59.6909514)'::geometry, 'node', 1632497612, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615805 59.6907985)'::geometry, 'node', 1632497613, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616825 59.6908428)'::geometry, 'node', 1632497614, 29, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614541 59.6909278)'::geometry, 'node', 1632497615, 34, NULL, '{"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616021 59.6910564)'::geometry, 'node', 1632497616, 26, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616651 59.6910293)'::geometry, 'node', 1632497617, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614666 59.6910732)'::geometry, 'node', 1632497618, 30, NULL, '{"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613231 59.6910597)'::geometry, 'node', 1632497619, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612077 59.691005)'::geometry, 'node', 1632497620, 31, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611782 59.690902)'::geometry, 'node', 1632497621, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612041 59.6907321)'::geometry, 'node', 1632503254, 6, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.462536 59.6908707)'::geometry, 'node', 1652587953, 5, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4619277 59.6908578)'::geometry, 'node', 1652587958, 5, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617256 59.6909215)'::geometry, 'node', 3177639362, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612018 59.6909805)'::geometry, 'node', 3188928044, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613001 59.6906759)'::geometry, 'node', 3218618266, 4, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614144 59.6907882)'::geometry, 'node', 4912277772, 4, NULL, '{"board_type":"history","information":"board","name":"Флора","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615482 59.6907937)'::geometry, 'node', 4912277773, 4, NULL, '{"board_type":"history","information":"board","name":"Урания","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613145 59.6908057)'::geometry, 'node', 4912277774, 4, NULL, '{"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616653 59.6908341)'::geometry, 'node', 4912277775, 4, NULL, '{"board_type":"history","information":"board","name":"Клио","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612216 59.6908451)'::geometry, 'node', 4912277776, 4, NULL, '{"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611751 59.690919)'::geometry, 'node', 4912277777, 4, NULL, '{"board_type":"history","information":"board","name":"Талия","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617272 59.6909351)'::geometry, 'node', 4912277778, 4, NULL, '{"board_type":"history","information":"board","name":"Калиопа","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612298 59.691015)'::geometry, 'node', 4912277779, 4, NULL, '{"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616819 59.6910157)'::geometry, 'node', 4912277780, 4, NULL, '{"board_type":"history","information":"board","name":"Полигимния","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461621 59.6910498)'::geometry, 'node', 4912277781, 4, NULL, '{"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613548 59.6910624)'::geometry, 'node', 4912277782, 4, NULL, '{"board_type":"history","information":"board","name":"Эрато","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615016 59.6910712)'::geometry, 'node', 4912277783, 4, NULL, '{"board_type":"history","information":"board","name":"Меркурий","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608954 59.6897746)'::geometry, 'node', 5251698420, 25, NULL, '{"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460198 59.6905729)'::geometry, 'node', 6758903438, 6, NULL, '{"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4625734 59.6908311)'::geometry, 'node', 8331430683, 3, NULL, '{"inlet":"grate","manhole":"drain","man_made":"manhole"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614743 59.690923)'::geometry, 'node', 8530936200, 1, NULL, '{"board_type":"history","information":"board","name":"Аполлон","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4597619 59.6907527)'::geometry, 'node', 9140565043, 1, NULL, '{"ford":"yes"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4606891 59.6906687)'::geometry, 'node', 9140576937, 3, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608515 59.6907117)'::geometry, 'node', 9140576938, 4, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613945 59.6911519)'::geometry, 'node', 9143069530, 5, NULL, '{"drain":"no","source:direction":"survey"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('POINT (30.4615903 59.6911716)'::geometry, 'node', 9143069534, 1, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460339 59.6906064)'::geometry, 'node', 9143093777, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601191 59.6906349)'::geometry, 'node', 9143093778, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610445 59.6908345)'::geometry, 'node', 9143093802, 4, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610243 59.6909861)'::geometry, 'node', 9143093804, 3, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612126 59.691117)'::geometry, 'node', 9143093806, 4, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460445 59.6910504)'::geometry, 'node', 9656736571, 2, NULL, '{"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4608056 59.6895935, 30.4608954 59.6897746, 30.4609447 59.6898691, 30.4614541 59.6909278)'::geometry, 'way', 30995960, 42, '{9140727117,5251698420,1518870630,1632497615}', '{"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605616 59.6906319, 30.4597619 59.6907527, 30.4596087 59.6907755)'::geometry, 'way', 149099000, 6, '{1621246509,9140565043,1621246531}', '{"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604741 59.6903357, 30.4604598 59.6904575, 30.4604646 59.6905099, 30.4604784 59.6905443, 30.4604933 59.6905665, 30.4605321 59.6905996, 30.4605616 59.6906319)'::geometry, 'way', 149099004, 8, '{1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601177 59.6905796, 30.4600903 59.6905709, 30.4600721 59.6905605, 30.4600579 59.6905458, 30.4600519 59.6905296, 30.4600545 59.6905133, 30.4600656 59.6904979, 30.4600844 59.6904845, 30.4601095 59.690474, 30.4601391 59.6904673, 30.460169 59.6904648, 30.4601991 59.6904661, 30.4602277 59.6904711, 30.4602498 59.6904787, 30.4602686 59.6904892, 30.4602829 59.6905018, 30.4602918 59.6905174, 30.4602917 59.6905327, 30.4602881 59.6905462, 30.4602793 59.6905579)'::geometry, 'way', 149099028, 5, '{9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949}', '{"barrier":"fence","colour":"green","fence_type":"wood","height":"2"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4603352 59.6911039, 30.460353 59.6910638, 30.4603719 59.6910414, 30.4603979 59.691021, 30.4604807 59.6909761, 30.460577 59.6909284, 30.4606406 59.6908886, 30.460669 59.6908562, 30.460673 59.6908234, 30.4606633 59.6907504, 30.4606582 59.6907286, 30.4606491 59.6907025, 30.4606314 59.690668, 30.460609 59.690636, 30.4605858 59.6906064, 30.4605578 59.6905735, 30.4605362 59.6905385, 30.4605214 59.6905022, 30.4605119 59.6904644, 30.4605095 59.6904098, 30.460512 59.6903499, 30.4605096 59.6903011)'::geometry, 'way', 149099029, 36, '{9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684}', '{"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610979 59.6907799, 30.4608515 59.6907117)'::geometry, 'way', 149099034, 9, '{1632503255,9140576938}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4629005 59.6913411, 30.4614541 59.6909278)'::geometry, 'way', 150294524, 8, '{1239612692,1632497615}', '{"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613148 59.6910721, 30.4613667 59.6910818, 30.4614212 59.6910868, 30.4614766 59.6910869, 30.4615311 59.6910822, 30.4615833 59.6910728, 30.4616314 59.691059, 30.461674 59.6910412, 30.4617098 59.6910199, 30.4617378 59.6909958, 30.461757 59.6909696, 30.4617669 59.6909421, 30.4617672 59.6909141, 30.4617579 59.6908866, 30.4617393 59.6908603, 30.4617119 59.690836, 30.4616766 59.6908145, 30.4616343 59.6907964, 30.4615866 59.6907823, 30.4615347 59.6907726, 30.4614802 59.6907676, 30.4614248 59.6907674, 30.4613703 59.6907721, 30.4613181 59.6907815, 30.46127 59.6907954, 30.4612274 59.6908132, 30.4611916 59.6908345, 30.4611636 59.6908586, 30.4611444 59.6908848, 30.4611345 59.6909123, 30.4611342 59.6909402, 30.4611435 59.6909678, 30.4611621 59.6909941, 30.4611895 59.6910184, 30.4612248 59.6910399, 30.461267 59.6910579, 30.4613148 59.6910721)'::geometry, 'way', 150294525, 6, '{1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686}', '{"name":"Дубовое кольцо"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.460726 59.6910052, 30.460614 59.6910145, 30.4605241 59.69102, 30.4604597 59.691022, 30.4603979 59.691021)'::geometry, 'way', 150294532, 30, '{1632497615,1632220252,9140727238,9140727242,9140727239,1621246592}', '{"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605096 59.6903011, 30.4614541 59.6909278)'::geometry, 'way', 150294541, 8, '{1239612684,1632497615}', '{"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4617339 59.6901702)'::geometry, 'way', 150294547, 9, '{1632497615,1518870645}', '{"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461819 59.6910085, 30.4618473 59.6909863, 30.4618928 59.6909647, 30.461951 59.6909401, 30.4620356 59.6909251, 30.462536 59.6908707)'::geometry, 'way', 152440395, 6, '{1652587944,1652587948,1652587950,9143093800,1652587952,1652587953}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613063 59.6907075, 30.4612631 59.6907161, 30.4612041 59.6907321)'::geometry, 'way', 152442436, 10, '{1652605207,9143204222,1632503254}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4617627 59.6907689, 30.4618218 59.6907946, 30.4618794 59.6908253, 30.4619277 59.6908578)'::geometry, 'way', 152442438, 8, '{1652605205,1652605201,1652605200,1652587958}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4612018 59.6909805, 30.4617256 59.6909215, 30.4625734 59.6908311, 30.4628306 59.6908088)'::geometry, 'way', 311975108, 20, '{3188928044,3177639362,8331430683,7911801321}', '{"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611708 59.6911018, 30.4611289 59.6910829, 30.4610793 59.6910531, 30.4610552 59.6910294, 30.4610432 59.6910153, 30.4610243 59.6909861)'::geometry, 'way', 313051687, 8, '{1632503180,9143069533,9143093805,9143069532,1632503185,9143093804}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061)'::geometry, 'way', 426269715, 5, '{4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051}', '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603979 59.691021, 30.4603224 59.6910067, 30.4602382 59.6909843, 30.4601137 59.6909482, 30.4600256 59.6909178, 30.4599203 59.6908773, 30.4597958 59.6908259, 30.4597422 59.6908088, 30.4596966 59.6907997, 30.4596501 59.6907961, 30.4596189 59.6907966, 30.4595885 59.6908005, 30.4595518 59.6908091, 30.4595101 59.6908241)'::geometry, 'way', 438780267, 20, '{1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957}', '{"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4625498 59.6908065, 30.4614541 59.6909278)'::geometry, 'way', 750779153, 4, '{1632220250,1632497615}', '{"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4631938 59.6918756)'::geometry, 'way', 750779155, 5, '{1632497615,1195120146}', '{"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4606491 59.6907025)'::geometry, 'way', 750779156, 5, '{1632497615,1621246419}', '{"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4625914 59.6924527)'::geometry, 'way', 750779157, 4, '{1632497615,1652587960}', '{"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611165 59.6918779, 30.46118 59.6916919, 30.4614541 59.6909278)'::geometry, 'way', 750779158, 4, '{9159459639,1239612686,1632497615}', '{"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4596189 59.6907966, 30.4596712 59.6907865, 30.4597275 59.6907729, 30.459757 59.6907607, 30.4597619 59.6907527, 30.4597677 59.6907431, 30.4597919 59.6907269, 30.4598455 59.6907093, 30.459934 59.6906931, 30.4600118 59.6906782, 30.4600467 59.690666, 30.4600681 59.6906484, 30.4600725 59.6906275, 30.4600655 59.6906044, 30.4600295 59.6905552, 30.4600066 59.6905268, 30.4600031 59.690512, 30.4600111 59.6904995, 30.460044 59.6904799, 30.4600789 59.6904629, 30.4601241 59.6904473)'::geometry, 'way', 988944864, 2, '{9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340}', '{"highway":"path","surface":"ground"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4607784 59.690696, 30.4606891 59.6906687)'::geometry, 'way', 988944880, 3, '{9140576936,9140576937}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601316 59.6905738, 30.4601383 59.6905745, 30.460144 59.6905725, 30.4601453 59.6905691, 30.4601415 59.6905663, 30.4601348 59.6905656, 30.4601291 59.6905676, 30.4601278 59.6905709, 30.4601316 59.6905738)'::geometry, 'way', 989184163, 1, '{9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601637 59.6905695, 30.4601704 59.6905701, 30.4601761 59.6905682, 30.4601774 59.6905648, 30.4601736 59.6905619, 30.4601668 59.6905613, 30.4601612 59.6905632, 30.4601599 59.6905666, 30.4601637 59.6905695)'::geometry, 'way', 989184166, 1, '{9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4615026 59.6911479, 30.4614481 59.6911519, 30.4613945 59.6911519)'::geometry, 'way', 989211851, 4, '{1652605211,9143069529,9143069530}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603719 59.6910414, 30.4597387 59.6911122)'::geometry, 'way', 989211857, 12, '{8650331583,4260007752}', '{"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603446 59.6911727, 30.4603806 59.6910714, 30.4603967 59.691047, 30.4604235 59.6910376, 30.4604664 59.6910348, 30.4605415 59.6910308)'::geometry, 'way', 989211858, 1, '{9143069609,9143069608,9143069607,9143069606,9143069605,9143069604}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613583 59.6906799, 30.4614025 59.6907746, 30.461428 59.6907726, 30.4614548 59.6907726, 30.4614763 59.6907739)'::geometry, 'way', 989211859, 1, '{9143093728,9143093727,9143093726,9143093725,9143093724}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461314 59.6906832, 30.461361 59.6907794, 30.4613301 59.6907854, 30.4613033 59.6907929, 30.4612845 59.690799, 30.4609841 59.6905973)'::geometry, 'way', 989211860, 1, '{9143093729,9143093730,9143093731,9143093732,9143093734,9143093733}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611484 59.6909364, 30.4611471 59.6909174, 30.4611497 59.6909005, 30.4611578 59.6908836, 30.4611645 59.6908714, 30.4611739 59.6908606, 30.4606917 59.6907283, 30.460681 59.6907283, 30.460677 59.6907337, 30.460685 59.6907601, 30.4606891 59.6907817, 30.4606917 59.6908129, 30.4606944 59.6908426, 30.4606837 59.6908656, 30.4606596 59.6908927, 30.4606247 59.6909184, 30.460563 59.6909523, 30.460453 59.6910064)'::geometry, 'way', 989211861, 1, '{9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605335 59.6903364, 30.4605335 59.6903946, 30.4605308 59.6904501, 30.4605348 59.6904813, 30.4605442 59.6905137, 30.4605576 59.6905394, 30.4605818 59.6905773, 30.4606193 59.6906247, 30.4606408 59.6906545, 30.4606596 59.6906856, 30.4606716 59.6906958, 30.4606958 59.6907039, 30.4611947 59.6908433, 30.4612155 59.6908301, 30.4612369 59.6908166, 30.461253 59.6908098, 30.4609492 59.6906112)'::geometry, 'way', 989211862, 1, '{9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604919 59.6903357, 30.4604919 59.690398, 30.4604892 59.6904494, 30.4604946 59.690486, 30.4605053 59.6905157, 30.4605161 59.6905387, 30.4605402 59.6905766, 30.4605778 59.690624, 30.4605992 59.6906538, 30.460626 59.6906931, 30.4606368 59.6907255, 30.4606448 59.6907574, 30.4606502 59.6907871, 30.4606542 59.6908196, 30.4606502 59.6908494, 30.4606327 59.6908751, 30.4606059 59.6908927, 30.4605496 59.6909266, 30.4604128 59.6909942)'::geometry, 'way', 989211863, 1, '{9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619893 59.6908956, 30.4620356 59.6909251)'::geometry, 'way', 989211867, 2, '{1652587955,1652587952}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610753 59.6908007, 30.4610979 59.6907799)'::geometry, 'way', 989211868, 4, '{9143093801,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611491 59.6907553, 30.4610979 59.6907799)'::geometry, 'way', 989211869, 4, '{1632503177,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461012 59.6909572, 30.4610056 59.6909157, 30.4610163 59.6908698, 30.4610445 59.6908345)'::geometry, 'way', 989211870, 4, '{1632503179,9143093803,1632503181,9143093802}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613456 59.6911475, 30.46131 59.6911438, 30.4612696 59.6911343, 30.4612126 59.691117)'::geometry, 'way', 989211871, 4, '{1652605209,9143069531,1632503237,9143093806}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4622826 59.6903796)'::geometry, 'way', 991343632, 2, '{1632497615,1518870652}', '{"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4620021 59.690877, 30.4617551 59.6909043, 30.4617579 59.690914, 30.4617593 59.6909255, 30.4617606 59.6909377)'::geometry, 'way', 991343633, 1, '{9159456550,9159456549,9159456545,9159456544,9159456543}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619941 59.6908547, 30.4617471 59.690882, 30.4617392 59.6908714, 30.4617298 59.6908606, 30.4617164 59.6908491)'::geometry, 'way', 991343634, 1, '{9159456552,9159456551,9159456548,9159456547,9159456546}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4602794 59.6911745, 30.4603083 59.6910871)'::geometry, 'way', 991343661, 1, '{9159459675,9159459674}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4614541 59.6909278)'::geometry, 'way', 1042527594, 11, '{9140727237,1632497615}', '{"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4611342 59.6909402, 30.4611345 59.6909123, 30.4611444 59.6908848, 30.4611636 59.6908586, 30.4611916 59.6908345, 30.4612274 59.6908132, 30.46127 59.6907954, 30.4613181 59.6907815, 30.4613703 59.6907721, 30.4614248 59.6907674, 30.4614802 59.6907676, 30.4615347 59.6907726, 30.4615866 59.6907823, 30.4616343 59.6907964, 30.4616766 59.6908145, 30.4617119 59.690836, 30.4617393 59.6908603, 30.4617579 59.6908866, 30.4617672 59.6909141, 30.4617669 59.6909421, 30.461757 59.6909696, 30.4617378 59.6909958, 30.4617098 59.6910199, 30.461674 59.6910412, 30.4616314 59.691059, 30.4615833 59.6910728, 30.4615311 59.6910822, 30.4614766 59.6910869, 30.4614212 59.6910868, 30.4613667 59.6910818, 30.4613148 59.6910721, 30.461267 59.6910579, 30.4612248 59.6910399, 30.4611895 59.6910184, 30.4611621 59.6909941, 30.4611435 59.6909678, 30.4611342 59.6909402)))'::geometry, 'way', 150294525, 6, NULL, '{"name":"Дубовое кольцо"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034)))'::geometry, 'way', 426269715, 5, NULL, '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601278 59.6905709, 30.4601291 59.6905676, 30.4601348 59.6905656, 30.4601415 59.6905663, 30.4601453 59.6905691, 30.460144 59.6905725, 30.4601383 59.6905745, 30.4601316 59.6905738, 30.4601278 59.6905709)))'::geometry, 'way', 989184163, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601599 59.6905666, 30.4601612 59.6905632, 30.4601668 59.6905613, 30.4601736 59.6905619, 30.4601774 59.6905648, 30.4601761 59.6905682, 30.4601704 59.6905701, 30.4601637 59.6905695, 30.4601599 59.6905666)))'::geometry, 'way', 989184166, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); ---Testcase 40: -CREATE FOREIGN TABLE "types_PostGIS"( "i" int OPTIONS (key 'true'), gm geometry, gg geography, r raster, t text, gm1 geometry, gg1 geography) SERVER sqlite_svr; ---Testcase 41: ERR - raster -INSERT INTO "types_PostGIS" ( "i", gm, gg, r, t ) VALUES (1, decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('1223456890', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); -ERROR: column "r" is of type raster but expression is of type bytea -LINE 1: ...100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('12... - ^ -HINT: You will need to rewrite or cast the expression. ---Testcase 42: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; ---Testcase 43: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; --- Insert SpatiaLite BLOB, read PostGOS/GEOS BLOB ---Testcase 44: OK -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (1, decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); ---Testcase 45: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; ---Testcase 46: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; ---Testcase 47: OK -SELECT "i", gm, gg, t FROM "types_PostGIS"; - i | gm | gg | t ----+----------------------------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 1 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"} -(1 row) - ---Testcase 48: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS"; - QUERY PLAN ------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: i, gm, gg, t - SQLite query: SELECT `i`, `gm`, `gg`, `t` FROM main."types_PostGIS" -(3 rows) - ---Testcase 49: ERR, no SRID -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); -ERROR: SpatiaLite doesn't accept GIS data without SRID -HINT: Not deparsable value for SpatiaLite in 42 bytes -CONTEXT: Hex data: 0101000000BF72CE99FE763E40ED4960730ED84D40 ---Testcase 50: ERR, no SRID -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); -ERROR: SpatiaLite doesn't accept GIS data without SRID -HINT: Not deparsable value for SpatiaLite in 42 bytes -CONTEXT: Hex data: 0101000000BF72CE99FE763E40ED4960730ED84D40 ---Testcase 51: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); - QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, gm, gg, t - SQLite query: SELECT `i`, `gm`, `gg`, `t` FROM main."types_PostGIS" WHERE ((`gm` = X'0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe')) -(3 rows) - ---Testcase 52: -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); - i | gm | gg | t ----+----------------------------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 1 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"} -(1 row) - ---Testcase 53: ERR damaged, but there is SRID -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = (decode('0101000020e6100000bf72ce99fe76', 'hex')::geometry); -ERROR: WKB structure does not match expected size! --- Insert PostGIS/GEOS BLOB, read SpatiaLite BLOB ---Testcase 54: OK -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (2, decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); ---Testcase 55: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; ---Testcase 56: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; ---Testcase 57: OK -SELECT "i", gm, gg, t FROM "types_PostGIS"; - i | gm | gg | t ----+----------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 1 | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"} - 2 | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"} -(2 rows) - ---Testcase 58: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; ---Testcase 59: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; ---Testcase 60: ERR damaged geometry, but there is SRID -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (3, decode('0101000020e6100000bf72ce99fe76', 'hex'), NULL, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); -ERROR: WKB structure does not match expected size! ---Testcase 61: ERR damaged geography, but there is SRID -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (4, NULL, decode('0101000020e6100000bf72ce99fe76', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); -ERROR: WKB structure does not match expected size! ---Testcase 62: -CREATE FOREIGN TABLE "♂" ( - id int4 OPTIONS (key 'true'), - "UAI" varchar(254), - "⌖" geometry, - geom geometry, - "t₀" date, - "class" text, - "URL" varchar(80) -) SERVER sqlite_svr; ---Testcase 63: -INSERT INTO "♂" SELECT * FROM "♂"."テスト"; ---Testcase 64: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE bytea; ---Testcase 65: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE bytea; ---Testcase 66: -SELECT * FROM "♂"; - id | UAI | ⌖ | geom | t₀ | class | URL -------+-----------------+----------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------+------------------------------------------------- - 991 | Olympus Mons | \x0001c89901004f337ddd51466c404135e6341ba732404f337ddd51466c404135e6341ba732407c010000004f337ddd51466c404135e6341ba73240fe | \x0001c8990100000000e436986b40000000c0aaf62a400000007459066d40000000600bad37407c0300000001000000470000000000008430f96b40000000a0d7543740000000144c076c4000000020f25237400000002c610a6c40000000a09790374000000094ff166c40000000e0f3973740000000846f196c40000000a016753740000000fc16226c40000000e0213d37400000008c85356c4000000020ec6f3740000000f413476c400000006040a93740000000ac82516c40000000a05aa73740000000f4e3736c40000000e0656f37400000004415866c40000000a0e9633740000000c418986c40000000a0e23f37400000001c079d6c4000000060c03137400000001c6ea76c40000000e0420137400000000cecb06c40000000e050c13640000000a4e9bb6c4000000020627136400000000ce7c76c40000000a072253640000000ac63d76c40000000e07eed3540000000a4dfe96c40000000a08ea53540000000d45bfb6c40000000e0ad1535400000007459066d40000000e0f0e133400000009c5bfc6c40000000203f7a3240000000a4dfe96c40000000e067be31400000000401e76c4000000020f63731400000002cb3e56c400000002076c03040000000a426df6c40000000208a5a3040000000c4a5da6c40000000c0ebe42f400000007c24d46c40000000c0bcf42e400000006ca3ce6c4000000040b0b42e40000000b4a3c66c40000000405e992e40000000cce1bf6c4000000040b1122e400000004c3ab76c40000000c0bb472d400000009c26ad6c40000000c00ec12c40000000cca29f6c40000000c0b1342c4000000064b1976c40000000409bb52b40000000c457906c40000000c039aa2b400000009c2d8a6c40000000409dec2b40000000b4137e6c400000004022dc2b4000000014906b6c40000000c01dc42b40000000d483616c40000000c0bda02b40000000e40b566c40000000401ab42b40000000c41f4d6c40000000c004ae2b40000000fc07426c40000000c004442b400000000cda386c40000000c0353c2b400000004c892a6c40000000c0aaf62a40000000348d186c40000000c09e2e2b400000007411056c40000000c08e762b400000009c18e46b400000004065362c40000000bc9dcc6b400000004044ce2c40000000bca2b56b40000000c00ad62d40000000c4e8ad6b40000000c07ace2e4000000034a4a96b4000000020360d3040000000f4c3a26b4000000020356930400000004ce2a26b4000000060c0a830400000006c52a66b4000000020b717314000000054e89f6b40000000a0ba523140000000e436986b40000000e01f6c31400000002c599a6b40000000603ed8314000000084e9a56b4000000020e0123240000000946aab6b4000000060f88e3240000000e4eaac6b40000000a0131b3340000000946aab6b40000000a03be7334000000014acad6b4000000020f79734400000003cedb86b40000000a086673540000000bcf0ca6b4000000060ae333640000000e487e06b40000000e0aa453740000000c407ec6b40000000e025ab37400000006ce9eb6b40000000600bad37400000009c6ef26b40000000600bad3740000000d494f66b40000000e0e68a37400000008430f96b40000000a0d7543740fe | 01-01-1973 | mo | http://planetarynames.wr.usgs.gov/Feature/4453 - 248 | Karzok | \x0001c8990100452873b369886c406df4308d4d673240452873b369886c406df4308d4d6732407c01000000452873b369886c406df4308d4d673240fe | \x0001c8990100f0ffff2b31846c40fbffffdf5b463240090000bce48c6c4000000060688832407c0300000001000000690100001000005c9e886c40f3ffff1f5d4632400e0000f48a886c40fbffffdf5b463240f3ffff8377886c40f3ffff1f5d463240f1ffff1b64886c40f8ffffdf60463240efffffb350886c40f6ffff5f674632401100004c3d886c400000006070463240fcfffff329886c40fbffffdf7b4632400b00009c16886c400c0000208a4632401100004c03886c40030000a09a4632400400000cf0876c40f4ffffdfad463240100000d4dc876c40fbffffdfc34632400a0000acc9876c4005000020dc463240f1ffff93b6876c4008000020f74632400c00008ca3876c40f2ffff5f14473240f1ffff9390876c40f2ffff5f34473240010000b47d876c40f5ffff9f56473240feffffe36a876c400e0000a07b4732400100002c58876c40faffff1fa34732400c00008c45876c40060000e0cc473240fbffff0333876c400b000060f9473240f1ffff9320876c40f7ffff1f28483240090000440e876c400b00006059483240faffff13fc866c40060000e08c4832400d000004ea866c400d0000e0c24832400400000cd8866c4004000060fb483240efffff3bc6866c40feffff1f36493240fbffff8bb4866c400400006073493240fbffff03a3866c400d0000e0b2493240f0ffffa391866c40fcffff9ff44932400600006480866c400a0000a0384a3240070000546f866c40080000207f4a3240fdffff6b5e866c40000000a0c74a32400a0000ac4d866c40030000a0124b32400200001c3d866c40000000a05f4b3240efffffb32c866c40ffffffdfae4b3240040000841c866c40f7ffff1f004c32400d00007c0c866c40fbffffdf534c3240f9ffffabfc856c400b000060a94c3240f2ffff0bed856c4001000020014d3240f0ffffa3dd856c400d0000e05a4d3240fdffff6bce856c40f5ffff9fb64d32400f00006cbf856c40fcffff9f144e3240020000a4b0856c40f2ffff5f744e3240f1ffff1ba2856c40feffff1fd64e3240110000c493856c40f9ffff9f394f32400a0000ac85856c40080000209f4f3240080000cc77856c40f5ffff9f065032400100002c6a856c40000000a06f503240f6ffffcb5c856c40030000a0da5032400a0000ac4f856c40f6ffff5f47513240f6ffffcb42856c40f4ffffdfb55132400b00002436856c40feffff1f26523240080000cc29856c40090000e0975232400a0000ac1d856c40040000600b533240f5ffffdb11856c4000000060805332400900004406856c40ffffffdff6533240050000fcfa846c40ffffffdf6e543240f3fffffbef846c4000000060e85432400000003ce5846c400400006063553240f6ffffcbda846c40090000e0df553240020000a4d0846c40070000a05d563240000000c4c6846c40fcffff9fdc563240f0ffff2bbd846c40f3ffff1f5d5732400f0000e4b3846c40f5ffff9fde573240f4ffffebaa846c40f9ffff9f61583240efffff3ba2846c40070000a0e5583240f5ffffdb99846c40030000a06a593240110000c491846c40f8ffffdff05932400d0000048a846c40f7ffff1f785a3240f1ffff9382846c4000000060005b32400f00006c7b846c40f9ffff9f895b32400b00009c74846c40fbffffdf135c3240f1ffff1b6e846c40ffffffdf9e5c3240060000ec67846c400d0000e02a5d3240faffff1362846c40000000a0b75d3240fbffff8b5c846c40f3ffff1f455e32400700005457846c40faffff1fd35e3240f4ffff7352846c40020000e0615f3240060000ec4d846c400b000060f15f3240010000b449846c400b00006081603240080000cc45846c400c00002012613240efffff3b42846c40faffff1fa3613240fbffff033f846c40fcffff9f346232400b0000243c846c40f5ffff9fc66232400300009439846c40f8ffffdf58633240feffff5b37846c4004000060eb633240fcffff7b35846c40070000607e643240fcfffff333846c400b00006011653240000000c432846c40fcffff9fa46532400f0000e431846c40f7ffff1f38663240feffff5b31846c400e0000a0cb663240f0ffff2b31846c40080000205f6732400700005431846c40030000a0f2673240ffffffd331846c40feffff1f86683240f9ffffab32846c40f9ffff9f19693240ffffffd333846c40060000e0ac693240feffff5b35846c40090000e03f6a32400a00003437846c400d0000e0d26a3240f5ffff6339846c40fdffff5f656b3240060000ec3b846c40090000e0f76b3240000000c43e846c40f9ffff9f896c3240f3fffffb41846c40040000601b6d3240fcffff7b45846c40f2ffff5fac6d3240feffff5b49846c40060000e03c6e32400c00008c4d846c40f3ffff1fcd6e3240faffff1352846c40fcffff9f5c6f3240f4ffffeb56846c4004000060eb6f3240f1ffff1b5c846c40f9ffff9f79703240f0ffffa361846c4008000020077132400500007467846c40fbffffdf93713240faffff9b6d846c40090000e01f723240f1ffff1b74846c40faffff1fab723240feffffe37a846c40fdffff5f357332400d00000482846c40f5ffff9fbe7332400f00006c89846c40ffffffdf46743240f0ffff2b91846c4007000060ce7432400000003c99846c40fcffff9f5475324003000094a1846c40020000e0d975324009000044aa846c40f4ffffdf5d7632400000003cb3846c40f8ffffdfe07632400d00007cbc846c40030000a0627732400400000cc6846c40faffff1fe3773240060000eccf846c400c00002062783240faffff13da846c40f7ffff1fe078324004000084e4846c40fcffff9f5c7932400000003cef846c40000000a0d7793240efffff3bfa846c400b000060517a3240f3ffff8305856c400b000060c97a32400c00001411856c40f7ffff1f407b3240feffffe31c856c40fdffff5fb57b3240fbffff0329856c40f8ffffdf287c3240feffff5b35856c40030000a09a7c3240f3fffffb41856c400d0000e00a7d3240070000dc4e856c40f9ffff9f797d3240f3fffffb5b856c4007000060e67d3240f5ffff6369856c400b000060517e3240fbffff0377856c40030000a0ba7e3240070000dc84856c400c000020227f3240050000fc92856c40090000e0877f32401100004ca1856c400e0000a0eb7f3240f5ffffdbaf856c40fdffff5f4d803240020000a4be856c40fdffff5fad803240f0ffffa3cd856c40faffff1f0b813240070000dcdc856c400800002067813240ffffff4bec856c40f8ffffdfc0813240060000ecfb856c40f8ffffdf18823240110000c40b866c40f5ffff9f6e823240080000cc1b866c400c000020c2823240f3fffffb2b866c400e0000a013833240060000643c866c400d0000e062833240050000fc4c866c40f7ffff1fb0833240f7ffffbb5d866c40faffff1ffb833240f9ffffab6e866c400e0000a043843240110000c47f866c400c0000208a843240fbffff0391866c4007000060ce843240fdffff6ba2866c400000006010853240fcfffff3b3866c40090000e04f8532400a0000acc5866c40f3ffff1f8d853240fcffff7bd7866c40090000e0c7853240fcffff7be9866c40000000600086324003000094fb866c40f5ffff9f36863240080000cc0d876c400c0000206a863240f1ffff1b20876c400e0000a09b863240f1ffff9332876c40f9ffff5fca8632400200001c45876c40ffffffdff6863240110000c457876c400a0000a020873240040000846a876c40f7ffff1f48873240feffff5b7d876c40f3ffff1f6d8732400900004490876c40000000a08f873240f7ffff43a3876c40000000a0af873240f6ffff53b6876c40060000e0cc87324005000074c9876c40090000e0e7873240020000a4dc876c400000006000883240f5ffffdbef876c40feffff1f16883240f9ffff2303886c400b000060298832400d00007c16886c400c0000203a883240f5ffffdb29886c40f7ffff1f488832400000003c3d886c40fbffffdf53883240f9ffffab50886c40060000e05c883240faffff1364886c4004000060638832400c00008c77886c400800002067883240050000fc8a886c400000006068883240f4ffff739e886c4008000020678832400f0000e4b1886c40faffff1f6388324007000054c5886c40060000e05c883240090000bcd8886c40fbffffdf538832400b000024ec886c40f7ffff1f48883240fcffff7bff886c400c0000203a883240100000d412896c400b00006029883240f1ffff1b26896c40feffff1f16883240feffff5b39896c40f7ffff1f00883240fbffff8b4c896c40090000e0e78732400a0000ac5f896c40060000e0cc873240090000bc72896c40f6ffff5faf873240f7ffffbb85896c40000000a08f873240020000a498896c40f3ffff1f6d87324005000074ab896c40f7ffff1f48873240f8ffff33be896c400a0000a020873240070000dcd0896c40f5ffff9ff68632400f00006ce3896c40f9ffff5fca863240f5ffffdbf5896c40040000609b863240f8ffff33088a6c400c0000206a863240fdffff6b1a8a6c400700006036863240040000842c8a6c4000000060008632400d00007c3e8a6c40090000e0c7853240f6ffff53508a6c40060000e08c8532400d000004628a6c40000000a04f85324003000094738a6c40f7ffff1f10853240050000fc848a6c40feffff1fce843240efffff3b968a6c400c0000208a84324007000054a78a6c400e0000a043843240efffff3bb88a6c400d0000e0fa833240050000fcc88a6c40090000e0af83324003000094d98a6c400d0000e062833240f3fffffbe98a6c400400006013833240f8ffff33fa8a6c40020000e0c1823240f8ffff330a8b6c40070000606e8232400400000c1a8b6c400a0000a0188232400a0000ac298b6c400a0000a0c08132400200001c398b6c40ffffffdf66813240f6ffff53488b6c400d0000e00a81324007000054578b6c40f3ffff1fad803240f1ffff1b668b6c40f3ffff1f4d803240f9ffffab748b6c4004000060eb7f3240050000fc828b6c40000000a0877f32400200001c918b6c40020000e0217f32400e0000f49e8b6c40f9ffff5fba7e3240f1ffff93ac8b6c4001000020517e3240fcfffff3b98b6c40feffff1fe67d32400200001cc78b6c4001000020797d3240f3fffffbd38b6c40030000a00a7d32400b00009ce08b6c40f9ffff5f9a7c32400e0000f4ec8b6c4000000060287c3240f2ffff0bf98b6c40060000e0b47b3240feffffe3048c6c40090000e03f7b3240f4ffff73108c6c4001000020c97a3240f7ffffbb1b8c6c4001000020517a3240090000bc268c6c40f6ffff5fd779324005000074318c6c40050000205c7932400f0000e43b8c6c40090000e0df7832400400000c468c6c40020000e0617832400f0000e44f8c6c40030000a0e277324005000074598c6c400c00002062773240090000bc628c6c400a0000a0e0763240010000b46b8c6c40070000a05d7632401000005c748c6c400b000060d9753240090000bc7c8c6c40f2ffff5f54753240000000c4848c6c40f4ffffdfcd743240040000848c8c6c40f5ffff9f46743240fcfffff3938c6c40feffff1fbe733240f2ffff0b9b8c6c40060000e034733240f5ffffdba18c6c40030000a0aa723240f6ffff53a88c6c40000000a01f7232400d00007cae8c6c400e0000a093713240f6ffff53b48c6c40ffffffdf06713240ffffffd3b98c6c400b00006079703240fbffff03bf8c6c40faffff1feb6f3240f5ffffdbc38c6c40050000205c6f324006000064c88c6c40fcffff9fcc6e3240f1ffff93cc8c6c40fcffff9f3c6e3240f4ffff73d08c6c4005000020ac6d3240f3fffffbd38c6c400d0000e01a6d3240f0ffff2bd78c6c400b000060896c32400d000004da8c6c40f6ffff5ff76b3240fbffff8bdc8c6c40f3ffff1f656b3240090000bcde8c6c40f9ffff5fd26a3240f1ffff93e08c6c40000000a03f6a3240faffff13e28c6c40f2ffff5fac693240f7ffff43e38c6c400100002019693240f1ffff1be48c6c40f4ffffdf85683240f1ffff93e48c6c40f9ffff5ff2673240090000bce48c6c40f5ffff9f5e673240fbffff8be48c6c40faffff1fcb6632400400000ce48c6c40000000a037663240f0ffff2be38c6c40f2ffff5fa4653240f3fffffbe18c6c40f8ffffdf10653240fdffff6be08c6c40f4ffffdf7d643240fbffff8bde8c6c40faffff1feb633240f6ffff53dc8c6c400000006058633240080000ccd98c6c40feffff1fc6623240feffffe3d68c6c40f2ffff5f346232400a0000acd38c6c40030000a0a2613240f1ffff1bd08c6c40f9ffff9f11613240efffff3bcc8c6c4001000020816032400d000004c88c6c4001000020f15f324005000074c38c6c40f9ffff9f615f3240f1ffff93be8c6c400d0000e0d25e3240feffff5bb98c6c40fcffff9f445e3240ffffffd3b38c6c4008000020b75d3240f3fffffbad8c6c40030000a02a5d3240080000cca78c6c40f5ffff9f9e5c32401100004ca18c6c400e0000a0135c32400d00007c9a8c6c400b000060895b3240feffff5b938c6c40f7ffff1f005b32400f0000e48b8c6c40090000e0775a32400b000024848c6c400a0000a0f0593240faffff137c8c6c40f9ffff5f6a5932400a0000ac738c6c40f3ffff1fe5583240fbffff036b8c6c4001000020615832400d000004628c6c4007000060de573240090000bc588c6c40060000e05c573240f9ffff234f8c6c40f2ffff5fdc563240f7ffff43458c6c40fdffff5f5d5632400200001c3b8c6c40000000a0df553240f9ffffab308c6c40faffff1f63553240060000ec258c6c40f7ffff1fe8543240f4ffffeb1a8c6c40f5ffff9f6e543240faffff9b0f8c6c40f5ffff9ff65332400400000c048c6c40090000e07f533240f8ffff33f88b6c400d0000e00a533240f1ffff1bec8b6c40000000a097523240f7ffffbbdf8b6c40070000a0255232400200001cd38b6c40070000a0b5513240efffff3bc68b6c4008000020475132400200001cb98b6c40f9ffff5fda503240010000b4ab8b6c40f6ffff5f6f503240faffff139e8b6c400700006006503240efffff3b908b6c40ffffffdf9e4f32400b000024828b6c400b000060394f3240080000cc738b6c40f4ffffdfd54e32400000003c658b6c4005000020744e3240f4ffff73568b6c40f2ffff5f144e324005000074478b6c4007000060b64d324009000044388b6c40030000a05a4d3240100000d4288b6c40f8ffffdf004d32400a000034198b6c4001000020a94c3240f5ffff63098b6c400e0000a0534c3240f5ffff63f98a6c40f7ffff1f004c3240f0ffff2be98a6c40f5ffff9fae4b3240f6ffffcbd88a6c40f6ffff5f5f4b3240f8ffff33c88a6c40f9ffff5f124b3240fcffff7bb78a6c40000000a0c74a3240fbffff8ba68a6c40ffffffdf7e4a3240fcffff7b958a6c400a0000a0384a324009000044848a6c40f2ffff5ff4493240070000dc728a6c40030000a0b249324007000054618a6c40faffff1f73493240f0ffffa34f8a6c40feffff1f36493240ffffffd33d8a6c4004000060fb4832400f0000e42b8a6c400d0000e0c2483240080000cc198a6c40060000e08c483240faffff9b078a6c4001000020594832401100004cf5896c40090000e027483240070000dce2896c4001000020f94732401000005cd0896c40060000e0cc473240f7ffffbbbd896c400d0000e0a2473240fbffff03ab896c400e0000a07b473240f8ffff3398896c40f5ffff9f564732401100004c85896c400500002034473240f6ffff5372896c40f2ffff5f144732401100004c5f896c40ffffffdff6463240f8ffff334c896c4005000020dc463240f2ffff0b39896c400e0000a0c3463240ffffffd325896c40f4ffffdfad463240f1ffff9312896c40030000a09a463240f7ffff43ff886c400c0000208a463240fcfffff3eb886c40fbffffdf7b463240f1ffff93d8886c4000000060704632400a000034c5886c40f6ffff5f67463240080000ccb1886c40f8ffffdf604632401000005c9e886c40f3ffff1f5d463240fe | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14144 - 249 | Pangboche | \x0001c89901001bf6df6511536c4069a19d97424731401bf6df6511536c4069a19d97424731407c010000001bf6df6511536c4069a19d9742473140fe | \x0001c8990100f9ffffab52506c40faffff1f63313140110000c411566c4000000060485d31407c030000000100000069010000fbffff033f536c40fbffffdf63313140f8ffff3332536c40faffff1f63313140feffff5b25536c40fbffffdf63313140fbffff8b18536c40f5ffff9f66313140010000b40b536c400d0000e06a313140f4ffffebfe526c40f8ffffdf70313140f1ffff1bf2526c400000006078313140feffff5be5526c40020000e0813131400b00009cd8526c40060000e08c313140f5ffffdbcb526c40020000e099313140f0ffff2bbf526c4000000060a831314004000084b2526c4000000060b8313140060000eca5526c40f9ffff5fca3131400700005499526c40f4ffffdfdd313140f6ffffcb8c526c40faffff1ff3313140f6ffff5380526c40020000e009323140060000ec73526c40f9ffff5f223231400c00008c67526c40fcffff9f3c3231400000003c5b526c400a0000a058323140fbffff034f526c40feffff1f76323140100000d442526c40f3ffff1f95323140090000bc36526c40f4ffffdfb5323140efffffb32a526c40f7ffff1fd8323140000000c41e526c4005000020fc323140f4ffffeb12526c40f9ffff9f21333140f9ffff2307526c400a0000a048333140fcffff7bfb516c400b000060713331400f0000e4ef516c400e0000a09b33314006000064e4516c40f6ffff5fc7333140fbffff03d9516c40fcffff9ff4333140f7ffffbbcd516c400400006023343140f1ffff93c2516c400e0000a053343140f3ffff83b7516c40fdffff5f85343140f1ffff93ac516c400a0000a0b8343140f7ffffbba1516c40f3ffff1fed343140f2ffff0b97516c400400006023353140f4ffff738c516c400d0000e05a3531400d00000482516c40fbffffdf93353140010000b477516c40feffff1fce353140f3ffff836d516c40020000e009363140fcffff7b63516c40ffffffdf463631400300009459516c40f3ffff1f85363140080000cc4f516c40060000e0c4363140f8ffff3346516c40f4ffffdf05373140090000bc3c516c40090000e0473731400f00006c33516c40040000608b373140090000442a516c40f7ffff1fd0373140f7ffff4321516c40feffff1f16383140fdffff6b18516c40f3ffff1f5d383140110000c40f516c40fdffff5fa53831400000003c07516c40ffffffdfee383140f4ffffebfe506c400b00006039393140090000bcf6506c40f3ffff1f85393140000000c4ee506c40020000e0d1393140f4ffffebe6506c40000000a01f3a31401100004cdf506c40070000606e3a3140ffffffd3d7506c40feffff1fbe3a3140f1ffff93d0506c40080000200f3b3140fcffff7bc9506c40f8ffffdf603b3140f1ffff93c2506c4004000060b33b3140f5ffffdbbb506c4008000020073c3140feffff5bb5506c400e0000a05b3c3140fbffff03af506c40f8ffffdfb03c3140feffffe3a8506c4008000020073d31400e0000f4a2506c40f4ffffdf5d3d31400000003c9d506c40070000a0b53d3140010000b497506c40feffff1f0e3e31400600006492506c40f6ffff5f673e3140f7ffff438d506c400b000060c13e3140f6ffff5388506c40fbffffdf1b3f3140f0ffffa383506c4008000020773f3140f9ffff237f506c40faffff1fd33f3140100000d47a506c40f6ffff5f2f403140000000c476506c40f2ffff5f8c403140feffffe372506c40020000e0e94031400000003c6f506c40090000e047413140080000cc6b506c4007000060a6413140f1ffff9368506c40fdffff5f054231400300009465506c40fcffff9f64423140f6ffffcb62506c40f2ffff5fc4423140efffff3b60506c40fcffff9f244331400f0000e45d506c40060000e084433140110000c45b506c40070000a0e5433140f5ffffdb59506c40f5ffff9f46443140f8ffff3358506c40090000e0a7443140090000bc56506c400b00006009453140fcffff7b55506c400d0000e06a4531400d00007c54506c40fcffff9fcc453140010000b453506c40f5ffff9f2e463140f9ffff2353506c400000006090463140f6ffffcb52506c40f9ffff5ff2463140f9ffffab52506c40fcffff9f54473140000000c452506c40f5ffff9fb64731400200001c53506c400a0000a0184831400a0000ac53506c40030000a07a483140fdffff6b54506c40fcffff9fdc4831400500007455506c40070000603e493140f9ffffab56506c40090000e09f493140f1ffff1b58506c400b000060014a3140110000c459506c40030000a0624a31400a0000ac5b506c400e0000a0c34a3140080000cc5d506c40f2ffff5f244b3140f1ffff1b60506c40fcffff9f844b3140f9ffffab62506c40060000e0e44b31400500007465506c40fcffff9f444c3140f4ffff7368506c40fbffffdfa34c3140f0ffffa36b506c400d0000e0024d31400c0000146f506c400b000060614d3140efffffb372506c40f6ffff5fbf4d3140f1ffff9376506c40060000e01c4e3140020000a47a506c40020000e0794e3140f4ffffeb7e506c4007000060d64e31400f00006c83506c40f9ffff5f324f3140f1ffff1b88506c40070000a08d4f3140fbffff038d506c40f7ffff1fe84f31400b00002492506c400c000020425031400500007497506c40040000609b503140050000fc9c506c40fbffffdff3503140efffffb3a2506c400e0000a04b513140020000a4a8506c40030000a0a2513140000000c4ae506c40f8ffffdff85131400c000014b5506c40feffff1f4e52314003000094bb506c40030000a0a2523140ffffff4bc2506c4007000060f6523140f0ffff2bc9506c40010000204953314009000044d0506c400d0000e09a5331400c00008cd7506c400e0000a0eb533140050000fcde506c400e0000a03b5431400b00009ce6506c40f9ffff5f8a543140f4ffff73ee506c40f7ffff1fd8543140fdffff6bf6506c40060000e024553140f1ffff93fe506c400a0000a070553140f4ffffeb06516c4004000060bb5531400f00006c0f516c40fcffff9f04563140f1ffff1b18516c40f3ffff1f4d5631400e0000f420516c400500002094563140fcfffff329516c400c000020da5631400200001c33516c40ffffffdf1e573140fdffff6b3c516c40f9ffff5f625731400f0000e445516c40fcffff9fa4573140fcffff7b4f516c40070000a0e5573140f7ffff4359516c40fdffff5f25583140f0ffff2b63516c40fbffffdf635831400a0000346d516c40f8ffffdfa0583140f5ffff6377516c40fcffff9fdc583140010000b481516c40ffffffdf165931400100002c8c516c40090000e04f593140000000c496516c40f6ffff5f8759314005000074a1516c40070000a0bd593140ffffff4bac516c40f9ffff5ff25931400000003cb7516c40070000a0255a3140ffffff4bc2516c40f6ffff5f575a3140fcffff7bcd516c40000000a0875a3140000000c4d8516c4007000060b65a31400b000024e4516c40fbffffdfe35a3140f0ffffa3ef516c40000000a00f5b31400000003cfb516c40020000e0395b3140f4ffffeb06526c40f9ffff5f625b3140efffffb312526c40f9ffff9f895b3140f1ffff931e526c4008000020af5b3140040000842a526c40faffff1fd35b3140fbffff8b36526c40fdffff5ff55b3140020000a442526c40feffff1f165c3140100000d44e526c40fdffff5f355c31400c0000145b526c400d0000e0525c3140f5ffff6367526c40f5ffff9f6e5c3140110000c473526c40f8ffffdf885c3140f8ffff3380526c400b000060a15c3140efffffb38c526c4000000060b85c31400000003c99526c40070000a0cd5c3140ffffffd3a5526c4001000020e15c3140f4ffff73b2526c40faffff1ff35c31400200001cbf526c40faffff1f035d3140080000cccb526c40f9ffff9f115d3140fbffff8bd8526c40f5ffff9f1e5d31401100004ce5526c40f9ffff9f295d3140faffff13f2526c40faffff1f335d3140feffffe3fe526c40030000a03a5d3140010000b40b536c400a0000a0405d3140fbffff8b18536c40060000e0445d3140f5ffff6325536c40000000a0475d3140efffff3b32536c4000000060485d31400c0000143f536c40000000a0475d3140060000ec4b536c40060000e0445d3140090000bc58536c400a0000a0405d31400c00008c65536c40030000a03a5d31401000005c72536c40faffff1f335d3140f9ffff237f536c40f9ffff9f295d3140060000ec8b536c40070000601e5d3140020000a498536c40f9ffff9f115d314007000054a5536c40faffff1f035d31400d000004b2536c400d0000e0f25c3140020000a4be536c4001000020e15c31400000003ccb536c40070000a0cd5c3140110000c4d7536c4000000060b85c3140efffff3be4536c400b000060a15c3140f9ffffabf0536c40f8ffffdf885c3140f2ffff0bfd536c40f5ffff9f6e5c3140feffff5b09546c400d0000e0525c3140faffff9b15546c40f3ffff1f355c3140080000cc21546c40feffff1f165c31400f0000e42d546c40fdffff5ff55b3140060000ec39546c40faffff1fd35b31400f0000e445546c4008000020af5b3140f7ffffbb51546c40f9ffff9f895b3140f3ffff835d546c40f9ffff5f625b31400a00003469546c40f9ffff9f395b3140f6ffffcb74546c40f6ffff5f0f5b3140ffffff4b80546c400e0000a0e35a31400a0000ac8b546c4007000060b65a31400e0000f496546c40000000a0875a31400b000024a2546c40f6ffff5f575a31400a000034ad546c40fdffff5f255a31400b000024b8546c400c000020f2593140050000fcc2546c40fdffff5fbd593140010000b4cd546c40f6ffff5f8759314009000044d8546c40090000e04f593140090000bce2546c40ffffffdf16593140f2ffff0bed546c40f2ffff5fdc5831400000003cf7546c400a0000a0a05831401100004c01556c400e0000a0635831400a0000340b556c40fdffff5f255831400e0000f414556c40070000a0e5573140f1ffff931e556c40fcffff9fa45731400400000c28556c40f9ffff5f62573140feffff5b31556c40ffffffdf1e573140040000843a556c400c000020da563140fcffff7b43556c400500002094563140f6ffff534c556c40060000e04c563140fbffff0355556c40fcffff9f04563140f3ffff835d556c40faffff1fbb553140f5ffffdb65556c4000000060705531400d0000046e556c40060000e0245531400d00000476556c40f7ffff1fd8543140ffffffd37d556c400c0000208a5431400500007485556c40040000603b543140feffffe38c556c400e0000a0eb5331400100002c94556c40030000a09a533140f7ffff439b556c40f8ffffdf485331400b000024a2556c40feffff1ff6523140070000dca8556c40030000a0a2523140feffff5baf556c40f4ffffdf4d5231400a0000acb5556c400a0000a0f8513140080000ccbb556c40f9ffff5fa2513140f7ffffbbc1556c40040000604b51314005000074c7556c400e0000a0f3503140050000fccc556c40faffff1f9b503140ffffff4bd2556c40020000e0415031400f00006cd7556c40090000e0e74f3140f6ffff53dc556c40fdffff5f8d4f3140fbffff03e1556c400c000020324f3140f3ffff83e5556c40feffff1fd64e3140080000cce9556c40f9ffff9f794e3140f5ffffdbed556c40fcffff9f1c4e3140010000b4f1556c4008000020bf4d3140feffff5bf5556c4001000020614d3140000000c4f8556c40030000a0024d3140f3fffffbfb556c400e0000a0a34c3140050000fcfe556c40f2ffff5f444c3140110000c401566c40fcffff9fe44b3140ffffff4b04566c40f2ffff5f844b3140020000a406566c4005000020244b3140000000c408566c4004000060c34a3140020000a40a566c40f9ffff5f624a3140f6ffff530c566c4001000020014a3140110000c40d566c40000000a09f493140050000fc0e566c40feffff1f3e493140f3fffffb0f566c40f2ffff5fdc483140000000c410566c40f9ffff5f7a4831400700005411566c400000006018483140f0ffffa311566c4007000060b6473140110000c411566c40f2ffff5f54473140f0ffffa311566c40f9ffff5ff24631401100004c11566c40f7ffff1f90463140090000bc10566c40070000602e463140060000ec0f566c40f2ffff5fcc453140f4ffffeb0e566c40030000a06a4531400a0000ac0d566c400100002009453140efffff3b0c566c40000000a0a7443140fbffff8b0a566c400700006046443140020000a408566c40fdffff5fe54331400400008406566c40fcffff9f844331400100002c04566c40f2ffff5f24433140faffff9b01566c4005000020c4423140100000d4fe556c40f2ffff5f64423140ffffffd3fb556c40f3ffff1f054231400b00009cf8556c40feffff1fa6413140f0ffff2bf5556c40000000a047413140f3ffff83f1556c40f9ffff9fe9403140f0ffffa3ed556c40050000208c40314003000094e9556c40080000202f403140f7ffff43e5556c400d0000e0d23f3140000000c4e0556c40ffffffdf763f3140faffff13dc556c400e0000a01b3f3140f9ffff23d7556c4001000020c13e31400d000004d2556c4008000020673e3140efffffb3cc556c40feffff1f0e3e3140f0ffff2bc7556c40070000a0b53d314005000074c1556c40f4ffffdf5d3d3140f3ffff83bb556c40ffffffdf063d3140f5ffff63b5556c400a0000a0b03c3140f2ffff0baf556c40040000605b3c3140fbffff8ba8556c40ffffffdf063c3140ffffffd3a1556c4004000060b33b3140f4ffffeb9a556c400a0000a0603b3140ffffffd393556c40ffffffdf0e3b3140f1ffff938c556c40feffff1fbe3a31400200001c85556c40feffff1f6e3a3140050000747d556c40f6ffff5f1f3a3140f0ffffa375556c40f9ffff9fd13931400a0000ac6d556c40060000e084393140fcffff7b65556c400b00006039393140f9ffff235d556c40f5ffff9fee383140020000a454556c40fdffff5fa5383140f3fffffb4b556c40f3ffff1f5d383140f9ffff2343556c40f4ffffdf153831400b0000243a556c40f7ffff1fd0373140050000fc30556c40040000608b3731400a0000ac27556c40090000e047373140f8ffff331e556c40070000a005373140f1ffff9314556c40fcffff9fc4363140100000d40a556c40060000e084363140f4ffffeb00556c40f5ffff9f46363140feffffe3f6546c40f9ffff9f09363140efffffb3ec546c40f4ffffdfcd35314006000064e2546c400e0000a093353140060000ecd7546c40030000a05a353140feffff5bcd546c40faffff1f23353140020000a4c2546c40f3ffff1fed343140ffffffd3b7546c4000000060b8343140feffffe3ac546c40f3ffff1f85343140ffffffd3a1546c400400006053343140020000a496546c40faffff1f23343140feffff5b8b546c40f2ffff5ff4333140f3fffffb7f546c4008000020c73331400400008474546c40040000609b333140f4ffffeb68546c4001000020713331400000003c5d546c400a0000a048333140fcffff7b51546c40f9ffff9f21333140faffff9b45546c40fbffffdffb3231400a0000ac39546c40f7ffff1fd83231400a0000ac2d546c40070000a0b53231400c00008c21546c40f3ffff1f95323140f5ffff6315546c40f4ffffdf75323140f9ffff2309546c400000006058323140070000dcfc536c40fcffff9f3c3231400d00007cf0536c40f9ffff5f223231400400000ce4536c40020000e00932314003000094d7536c40faffff1ff3313140f2ffff0bcb536c40f4ffffdfdd3131400d00007cbe536c40f9ffff5fca313140f5ffffdbb1536c4000000060b83131400a000034a5536c40f7ffff1fa83131400400008498536c40f9ffff9f99313140080000cc8b536c40060000e08c313140f2ffff0b7f536c40020000e0813131400900004472536c400000006078313140fcffff7b65536c40f8ffffdf70313140f9ffffab58536c400d0000e06a313140f5ffffdb4b536c40f5ffff9f66313140fbffff033f536c40fbffffdf63313140fe | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14145 - 301 | Nix Olympica | \x0001c89901000000000000c06c402c095fc797c833400000000000c06c402c095fc797c833407c010000000000000000c06c402c095fc797c83340fe | | 01-01-1958 | al | http://planetarynames.wr.usgs.gov/Feature/4314 - 1849 | Hermes Patera | \x0001c89901000ad7a3703d526c4014ae47e17a5432400ad7a3703d526c4014ae47e17a5432407c010000000ad7a3703d526c4014ae47e17a543240fe | \x0001c8990100160000c02c486c4073ffffff271132406e0000c0715d6c402dffffffab9b32407c030000000100000027000000c60000c0e0486c4073ffffff271132409a00004043486c402dffffffbb223240160000c02c486c4073ffffff793732409a0000807b486c40e7feffff294b32408400006032486c40e7feffffd45432406e0000c059486c40e7feffff7f5e3240160000c03a496c402dffffff1b77324042000040404b6c4073ffffff47873240beffffbf534e6c40e7feffffef93324016000080834f6c400affffff279832406e0000c0c9506c402dffffff439a3240beffffbf8b526c402dffffffab9b324042000040cc556c402dffffff0b963240160000c096566c40baffffffd39132406e0000c0d1576c4073ffffff178a32409a00004023596c40baffffffc38332406e0000c0a15a6c402dffffff8b7f3240beffff7fd15b6c40baffffff157d3240000000009c5c6c4096ffffffdd78324042000040d45c6c4073ffffff97733240eaffff3f015d6c402dffffff0b69324092ffff3f2e5d6c40e7feffff4f6132406e0000c0715d6c402dffffff8b523240eaffff3f015d6c40baffffff434032409a000040f35b6c4073ffffff173032409a0000408b5a6c402dffffff8b253240160000c066596c402dffffff1b1d3240eaffff3fc9586c402dffffff4b1a3240160000c04a576c40baffffff831e3240160000c0e2556c40baffffff232432406e00004064546c402dffffffa727324000000040cf526c4050ffffff7d24324092ffff3fee516c4073ffffff371f32409a000040b3506c4073ffffffc7163240160000c08e4f6c4073ffffff27113240c60000c0804e6c40e7feffff5f153240c60000c0644c6c40baffffff131632409a0000405f4a6c4073fffffff7133240c60000c0e0486c4073ffffff27113240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15690 - 1688 | Olympus Rupes | \x0001c8990100ee68117fef4d6c408327cb1fe7663240ee68117fef4d6c408327cb1fe76632407c01000000ee68117fef4d6c408327cb1fe7663240fe | \x0001c8990100000000a47b9c6b4000000040d1822b400000000c43dd6c40000000e0144737407c020000004c0000000000009cbe6d6c40000000e01fef36400000008cf97d6c40000000a0eba736400000004c108b6c4000000060486d3640000000a4d2906c4000000060c64b3640000000e488956c40000000608319364000000074f59e6c400000006083193640000000a4e6b36c40000000205ebd35400000009421c46c40000000605a7a35400000000476cb6c4000000020e74335400000001c3ecc6c400000002045163540000000dcc6c66c40000000203b8e3440000000ccf8d66c40000000e0cb2e3340000000f4b0db6c40000000600e803240000000f4b0db6c40000000e0f70e3240000000f4b0db6c40000000a0d6f53140000000fc36dc6c400000002088fa30400000000c43dd6c40000000e092a23040000000b480d76c4000000060bf6330400000009468d56c40000000200d3e30400000005cbed16c40000000c012f62f40000000349ace6c40000000c04da22f400000000476cb6c40000000c024032f400000006c83c16c400000004003ea2e4000000064a1ba6c40000000c0db472e400000008448b16c40000000406e792d40000000ec55a76c4000000040a5e22c4000000044d19b6c40000000c05e6d2c40000000ac58916c40000000c099192c400000000ce0866c40000000c0dc4b2c40000000544f7a6c40000000c0dc4b2c400000003cf0666c40000000c017f82b400000008c6b5b6c4000000040b7ef2b40000000e4e64f6c40000000c099192c4000000024d0426c40000000c0318b2b40000000a4e9396c4000000040d1822b400000001cc8316c40000000c04ac32b40000000ac842c6c4000000040fc1d2c400000000c2a1e6c40000000406e792d40000000b467186c40000000406e792d40000000fcd60b6c4000000040a9252d400000004446ff6b40000000c0ef9a2d40000000fc48e96b40000000c079422e40000000ec6fd66b400000004081c82e400000006c0fce6b40000000c0e1d02e400000007cd4bd6b40000000c0e1d02e40000000d44fb26b40000000c0e9562f40000000941fae6b40000000205b1830400000006cfbaa6b40000000e053b330400000007c8dac6b4000000060a91331400000001439a56b40000000606e673140000000a47b9c6b40000000a01a8831400000009cd89c6b40000000e084d831400000006491a46b400000006051c33140000000bcbdb06b4000000060e19d31400000005cbcbb6b400000002028133240000000bc04c26b4000000020609d32400000006cc8bc6b40000000e033dc3240000000f467b46b40000000a0b9403340000000ece1b36b40000000a0ae983340000000248cb76b4000000060772f3440000000845abe6b40000000e03fc63440000000c48ac26b4000000020e743354000000084a1cf6b40000000e0afda354000000074dcdf6b40000000a03982364000000044ffed6b40000000e01fef3640000000e4fdf86b40000000a062213740000000645e016c40000000a0a1103740000000dcbe096c40000000a0e0ff3640000000a45b176c40000000e01fef364000000024bc1f6c40000000208fe23640000000ac28296c40000000e01fef36400000007c4b376c40000000e0100437400000006c86476c40000000e0922537400000001c91536c40000000e014473740000000ecb3616c4000000020021937400000009cbe6d6c40000000e01fef3640fe | 01-01-1976 | ru | http://planetarynames.wr.usgs.gov/Feature/4454 - 1847 | Zeus Patera | \x0001c89901000ad7a3703d626c40a4703d0ad76332400ad7a3703d626c40a4703d0ad76332407c010000000ad7a3703d626c40a4703d0ad7633240fe | \x0001c8990100dc000080cb4f6c40b000000026d731408c010080ad6d6c406a0000000ae332407c0300000001000000350000008c01008025506c40b0000000e6ac3240dc0000807f506c40b000000056b5324034010080ba516c406a0000001ac43240dc00008003546c406a0000002ad232408400008000576c406a0000009ada324008010000415a6c406a0000000ae33240dc000080275d6c406a0000000ae3324008010000e15f6c406a0000003ae032403401008032616c40b000000086df324034010080ca5f6c406a000000fad43240b00000005a5f6c40b000000036c63240dc000080f75f6c4023000000eeb3324008010000fd616c40b0000000a6a1324008010000cd646c40f6000000b29532403401008086676c406a0000007a913240dc000000b9696c40b00000001a97324084000080b06a6c40f6000000f2a03240340100800a6b6c4023000000aea83240b0000000b66c6c40b0000000669632408c010080ad6d6c40230000007e7e324084000080806d6c40f6000000b268324084000080cc6c6c406a000000ca50324008010000896c6c406a0000004a3a324060010000f46a6c40f6000000921f32408c01008075696c406a000000da04324034010080d2666c406a0000002af13140b0000000fa646c40f600000052e731408c01008021636c406a0000004ae03140b00000000e606c40230000008ed83140dc000080db5d6c40b000000026d73140080100005d5c6c40b000000026d7314008010000115d6c406a0000004ae03140b00000003e5d6c40f6000000f2ec314060010000e45c6c40b0000000e6f8314058000000035c6c40230000008e053240dc000080575a6c406a0000001a103240dc000080ef586c40230000003e19324060010000c85a6c40f60000000228324034010080465c6c40f6000000b23b3240dc000080275d6c406a000000ca503240dc000080735c6c40b00000009666324060010000305c6c40f600000092793240580000009b5a6c40f6000000028232408c0100802d576c406a000000da8b324058000000af556c40f6000000b2953240dc00008003546c40230000006e9d324058000000df526c40f6000000229e3240b00000001a546c406a0000002aa5324058000000af556c40f600000092a6324034010080d6536c40f600000062a932408400008014526c40b000000076a43240dc000080cb4f6c40b000000046a732408c01008025506c40b0000000e6ac3240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15689 - 1848 | Athena Patera | \x0001c8990100f6285c8fc2656c403d0ad7a370bd3240f6285c8fc2656c403d0ad7a370bd32407c01000000f6285c8fc2656c403d0ad7a370bd3240fe | \x0001c899010013010060aa606c40e7feffff8f993240e70000e0986a6c4073ffffff47e132407c030000000100000014000000ef0100e0ed606c4050ffffff19c432403f0100e047616c4096ffffffa5ce3240050200a0f0616c4096ffffff15d73240050200a0a4626c400affffff1dde3240d901002023646c4073ffffff47e13240ad0100a0a1656c40baffffff93e03240550100a036676c40baffffffc3dd32403f0100e003696c4073ffffff37d33240290100201d6a6c40e7feffff8fc6324013010060826a6c40e7feffff4fbb3240e70000e0986a6c400affffff1db132403f0100e0b7696c4050fffffff9a73240130100601a696c402dffffff7b9e3240d9010020a7676c40e7feffff8f993240550100a0ce656c40e7feffff8f9932403f0100e063636c40baffffffe39f3240fd0000a0c3616c40e7feffff6faa324081010020cc606c40ddffffffa1b4324013010060aa606c4050ffffff79be3240ef0100e0ed606c4050ffffff19c43240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15693 - 1850 | Apollo Patera | \x0001c899010066666666664e6c40713d0ad7a3f0314066666666664e6c40713d0ad7a3f031407c0100000066666666664e6c40713d0ad7a3f03140fe | \x0001c89901007e0200c08f486c403effffffdac73140d60200c056546c40f8feffff4e1732407c0300000001000000160000001002000022496c406bfeffffe6e83140c0020000c8486c4062ffffff48f031407e0200c08f486c40f8feffff2efb314094020080de486c40b2feffff2207324002030040b4496c406bfeffff1613324052020040764b6c40f8feffff4e17324018030000d34c6c40f8feffff4e17324052020040fa4e6c401bffffffbc123240d60200c0d2506c408ffeffffb40b3240d60200c03a526c408ffeffff140632406802000035546c408ffeffff64f23140d60200c056546c40d5feffffd0e0314052020040e6536c40f8feffff9ed631407e0200c0cf536c4062ffffff88ce3140aa02004005536c406bfefffff6c93140aa020040e9506c403effffffdac73140d60200c0b64e6c40b2feffffe2ce314094020080164d6c406bfeffff36d53140180300001f4c6c40b2feffff52d73140ec020080cd4a6c401bffffff4cdd31403c020080bf496c406bfeffff46e331401002000022496c406bfeffffe6e83140fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15694 - 1851 | Olympus Paterae | \x0001c899010052b81e85eb596c4052b81e85eb51324052b81e85eb596c4052b81e85eb5132407c0100000052b81e85eb596c4052b81e85eb513240fe | \x0001c8990100080100002d446c4050ffffffe9b8314084000080a06e6c4096ffffffc5ea32407c030000000100000044000000a8ffffff98446c40ddfffffff1733240a8ffffff4c456c406a0000006a8332400000000088466c4096fffffff58d32407cffff7f7f476c4023000000ce97324084000080c8496c40230000003ea03240b0000000ce4b6c40ddffffff91a632402c000080794d6c4096ffffff45a73240b00000009e4e6c4096ffffff75a43240d4ffff7fc24f6c406a0000003ab332407cffff7f57516c406a0000004ac13240a8ffffffa8526c406a0000005acf3240b0000000f2546c40230000007ed832408400008024576c40ddffffffd1de32407cffff7f7b5a6c4096ffffff25e5324000000000545c6c40230000005ee9324008010000e55e6c400affffff8de63240dc00008063606c400affffff8de632406001000088616c400affffffbde3324084000080ac626c4096fffffff5e732408c01008041646c4096ffffffc5ea324058000000fb666c400affffff5de932405800000017696c4050ffffff39e0324060010000ac6a6c4096ffffff45d4324058000000e76b6c40ddffffff81c5324060010000146c6c400affffff5dbc3240f20000c0356c6c4050ffffff36b6324084000020306c6c4096ffffff4ab132408c010080fd6b6c4096ffffffe5ac324034010080de6c6c4096ffffffd59e3240b0000000d66d6c400affffff2d923240dc000080736e6c40ddffffff317f324084000080a06e6c40ddffffff21713240080100005d6e6c4050ffffffa96132408c010080196e6c4096ffffffe5523240b0000000d66d6c40ddfffffff1463240580000004f6d6c4096fffffff5333240340100802a6c6c400affffffdd1e3240b0000000066b6c4050ffffff490d324008010000256a6c400affffffedff31406001000090686c4096ffffff45f331408c01008011676c400affffff6de931405800000093656c40ddffffffe1de3140b0000000fe636c40ddffffff41d93140b00000002e616c4050ffffff39d231408c010080555f6c400affffff4dcd314084000080585c6c40ddffffffd1d0314060010000345b6c400affffff7dca3140dc0000800f5a6c400affffffddc43140dc000080f3576c4096ffffffd5bd3140b0000000ee556c4050ffffffb9bb31408c01008015546c40ddffffff21bd3140b00000006a526c400affffff6dbc3140340100800a506c4050ffffffe9b83140080100009d4c6c400affffff0dc23140340100806a4a6c4050ffffffc9c931408c01008089496c400affffffedd2314084000080a8486c4050ffffffd9d7314060010000d0466c4050ffffffe9e53140840000808c466c400affffff7df731405800000057476c40ddffffff11093240840000808c466c4050ffffffb915324084000080d8456c4050ffffffc9233240340100807e456c4050ffffff092f3240b0000000c2456c4050ffffffa9343240b00000000e456c400affffff9d4032408400008070446c400affffff7d513240080100002d446c4096ffffffc5633240a8ffffff98446c40ddfffffff1733240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15695 - 1870 | Dionysus Patera | \x0001c8990100713d0ad7a3586c40f6285c8fc2f53140713d0ad7a3586c40f6285c8fc2f531407c01000000713d0ad7a3586c40f6285c8fc2f53140fe | \x0001c89901002c00008045516c40ddffffff61c831402c000080855c6c40ddffffff612232407c0300000001000000140000002c00008045516c40ddffffffe10b32400000000010526c40b0000000061532408400008034536c40b0000000761d3240840000809c546c40ddffffff6122324000000000fc566c406a0000002a1e324058000000eb586c40b0000000d6173240a8ffffffac5a6c40230000002e0b3240a8ffffff145c6c40230000001efd31402c000080855c6c40ddffffffc1ef314000000000e85b6c40ddffffffe1de314000000000805a6c40b000000056d43140dc000080f3576c406a0000009acc3140b0000000ee556c40ddffffff31cb31402c000080c9546c40b000000016c93140a8ffffffa4536c40ddffffff61c83140000000002c546c40ddffffff41d93140000000002c546c40ddffffff21ea314084000080e8536c40b0000000e6f831405800000097526c40230000008e0532402c00008045516c40ddffffffe10b3240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15692 - 1871 | Hera Patera | \x0001c89901008fc2f5285c476c4033333333337332408fc2f5285c476c4033333333337332407c010000008fc2f5285c476c403333333333733240fe | \x0001c8990100370000607d456c4000000000203732404d0000a0254e6c40ddffffffc79d32407c03000000010000001100000063000060b8466c40ddffffff813e324037000020cc456c4000000000ec4c3240bb0000209f456c4096ffffffdf583240370000607d456c4096ffffff196a3240130100605e466c406a000000707d3240a50000e0af476c40000000008e8c3240370000a0474a6c4096ffffff439a32404d000020204c6c40ddffffffc79d32404d0000a0254e6c4000000000609c324013010060b24c6c4023000000fe943240370000e08d4b6c40000000009c8d3240630000603c4a6c400000000010833240a50000a00c496c40ddffffff91793240bb000060a7486c40230000009e6d3240bb000060f3476c4096ffffff255e3240dfffffdfaf476c40000000002037324063000060b8466c40ddffffff813e3240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15691 -(12 rows) - ---Testcase 67: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE geometry; ---Testcase 68: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE geometry; ---Testcase 69: -SELECT * FROM "♂"; - id | UAI | ⌖ | geom | t₀ | class | URL -------+-----------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------+------------------------------------------------- - 991 | Olympus Mons | 0101000020C89901004F337DDD51466C404135E6341BA73240 | 0103000020C899010001000000470000000000008430F96B40000000A0D7543740000000144C076C4000000020F25237400000002C610A6C40000000A09790374000000094FF166C40000000E0F3973740000000846F196C40000000A016753740000000FC16226C40000000E0213D37400000008C85356C4000000020EC6F3740000000F413476C400000006040A93740000000AC82516C40000000A05AA73740000000F4E3736C40000000E0656F37400000004415866C40000000A0E9633740000000C418986C40000000A0E23F37400000001C079D6C4000000060C03137400000001C6EA76C40000000E0420137400000000CECB06C40000000E050C13640000000A4E9BB6C4000000020627136400000000CE7C76C40000000A072253640000000AC63D76C40000000E07EED3540000000A4DFE96C40000000A08EA53540000000D45BFB6C40000000E0AD1535400000007459066D40000000E0F0E133400000009C5BFC6C40000000203F7A3240000000A4DFE96C40000000E067BE31400000000401E76C4000000020F63731400000002CB3E56C400000002076C03040000000A426DF6C40000000208A5A3040000000C4A5DA6C40000000C0EBE42F400000007C24D46C40000000C0BCF42E400000006CA3CE6C4000000040B0B42E40000000B4A3C66C40000000405E992E40000000CCE1BF6C4000000040B1122E400000004C3AB76C40000000C0BB472D400000009C26AD6C40000000C00EC12C40000000CCA29F6C40000000C0B1342C4000000064B1976C40000000409BB52B40000000C457906C40000000C039AA2B400000009C2D8A6C40000000409DEC2B40000000B4137E6C400000004022DC2B4000000014906B6C40000000C01DC42B40000000D483616C40000000C0BDA02B40000000E40B566C40000000401AB42B40000000C41F4D6C40000000C004AE2B40000000FC07426C40000000C004442B400000000CDA386C40000000C0353C2B400000004C892A6C40000000C0AAF62A40000000348D186C40000000C09E2E2B400000007411056C40000000C08E762B400000009C18E46B400000004065362C40000000BC9DCC6B400000004044CE2C40000000BCA2B56B40000000C00AD62D40000000C4E8AD6B40000000C07ACE2E4000000034A4A96B4000000020360D3040000000F4C3A26B4000000020356930400000004CE2A26B4000000060C0A830400000006C52A66B4000000020B717314000000054E89F6B40000000A0BA523140000000E436986B40000000E01F6C31400000002C599A6B40000000603ED8314000000084E9A56B4000000020E0123240000000946AAB6B4000000060F88E3240000000E4EAAC6B40000000A0131B3340000000946AAB6B40000000A03BE7334000000014ACAD6B4000000020F79734400000003CEDB86B40000000A086673540000000BCF0CA6B4000000060AE333640000000E487E06B40000000E0AA453740000000C407EC6B40000000E025AB37400000006CE9EB6B40000000600BAD37400000009C6EF26B40000000600BAD3740000000D494F66B40000000E0E68A37400000008430F96B40000000A0D7543740 | 01-01-1973 | mo | http://planetarynames.wr.usgs.gov/Feature/4453 - 248 | Karzok | 0101000020C8990100452873B369886C406DF4308D4D673240 | 0103000020C899010001000000690100001000005C9E886C40F3FFFF1F5D4632400E0000F48A886C40FBFFFFDF5B463240F3FFFF8377886C40F3FFFF1F5D463240F1FFFF1B64886C40F8FFFFDF60463240EFFFFFB350886C40F6FFFF5F674632401100004C3D886C400000006070463240FCFFFFF329886C40FBFFFFDF7B4632400B00009C16886C400C0000208A4632401100004C03886C40030000A09A4632400400000CF0876C40F4FFFFDFAD463240100000D4DC876C40FBFFFFDFC34632400A0000ACC9876C4005000020DC463240F1FFFF93B6876C4008000020F74632400C00008CA3876C40F2FFFF5F14473240F1FFFF9390876C40F2FFFF5F34473240010000B47D876C40F5FFFF9F56473240FEFFFFE36A876C400E0000A07B4732400100002C58876C40FAFFFF1FA34732400C00008C45876C40060000E0CC473240FBFFFF0333876C400B000060F9473240F1FFFF9320876C40F7FFFF1F28483240090000440E876C400B00006059483240FAFFFF13FC866C40060000E08C4832400D000004EA866C400D0000E0C24832400400000CD8866C4004000060FB483240EFFFFF3BC6866C40FEFFFF1F36493240FBFFFF8BB4866C400400006073493240FBFFFF03A3866C400D0000E0B2493240F0FFFFA391866C40FCFFFF9FF44932400600006480866C400A0000A0384A3240070000546F866C40080000207F4A3240FDFFFF6B5E866C40000000A0C74A32400A0000AC4D866C40030000A0124B32400200001C3D866C40000000A05F4B3240EFFFFFB32C866C40FFFFFFDFAE4B3240040000841C866C40F7FFFF1F004C32400D00007C0C866C40FBFFFFDF534C3240F9FFFFABFC856C400B000060A94C3240F2FFFF0BED856C4001000020014D3240F0FFFFA3DD856C400D0000E05A4D3240FDFFFF6BCE856C40F5FFFF9FB64D32400F00006CBF856C40FCFFFF9F144E3240020000A4B0856C40F2FFFF5F744E3240F1FFFF1BA2856C40FEFFFF1FD64E3240110000C493856C40F9FFFF9F394F32400A0000AC85856C40080000209F4F3240080000CC77856C40F5FFFF9F065032400100002C6A856C40000000A06F503240F6FFFFCB5C856C40030000A0DA5032400A0000AC4F856C40F6FFFF5F47513240F6FFFFCB42856C40F4FFFFDFB55132400B00002436856C40FEFFFF1F26523240080000CC29856C40090000E0975232400A0000AC1D856C40040000600B533240F5FFFFDB11856C4000000060805332400900004406856C40FFFFFFDFF6533240050000FCFA846C40FFFFFFDF6E543240F3FFFFFBEF846C4000000060E85432400000003CE5846C400400006063553240F6FFFFCBDA846C40090000E0DF553240020000A4D0846C40070000A05D563240000000C4C6846C40FCFFFF9FDC563240F0FFFF2BBD846C40F3FFFF1F5D5732400F0000E4B3846C40F5FFFF9FDE573240F4FFFFEBAA846C40F9FFFF9F61583240EFFFFF3BA2846C40070000A0E5583240F5FFFFDB99846C40030000A06A593240110000C491846C40F8FFFFDFF05932400D0000048A846C40F7FFFF1F785A3240F1FFFF9382846C4000000060005B32400F00006C7B846C40F9FFFF9F895B32400B00009C74846C40FBFFFFDF135C3240F1FFFF1B6E846C40FFFFFFDF9E5C3240060000EC67846C400D0000E02A5D3240FAFFFF1362846C40000000A0B75D3240FBFFFF8B5C846C40F3FFFF1F455E32400700005457846C40FAFFFF1FD35E3240F4FFFF7352846C40020000E0615F3240060000EC4D846C400B000060F15F3240010000B449846C400B00006081603240080000CC45846C400C00002012613240EFFFFF3B42846C40FAFFFF1FA3613240FBFFFF033F846C40FCFFFF9F346232400B0000243C846C40F5FFFF9FC66232400300009439846C40F8FFFFDF58633240FEFFFF5B37846C4004000060EB633240FCFFFF7B35846C40070000607E643240FCFFFFF333846C400B00006011653240000000C432846C40FCFFFF9FA46532400F0000E431846C40F7FFFF1F38663240FEFFFF5B31846C400E0000A0CB663240F0FFFF2B31846C40080000205F6732400700005431846C40030000A0F2673240FFFFFFD331846C40FEFFFF1F86683240F9FFFFAB32846C40F9FFFF9F19693240FFFFFFD333846C40060000E0AC693240FEFFFF5B35846C40090000E03F6A32400A00003437846C400D0000E0D26A3240F5FFFF6339846C40FDFFFF5F656B3240060000EC3B846C40090000E0F76B3240000000C43E846C40F9FFFF9F896C3240F3FFFFFB41846C40040000601B6D3240FCFFFF7B45846C40F2FFFF5FAC6D3240FEFFFF5B49846C40060000E03C6E32400C00008C4D846C40F3FFFF1FCD6E3240FAFFFF1352846C40FCFFFF9F5C6F3240F4FFFFEB56846C4004000060EB6F3240F1FFFF1B5C846C40F9FFFF9F79703240F0FFFFA361846C4008000020077132400500007467846C40FBFFFFDF93713240FAFFFF9B6D846C40090000E01F723240F1FFFF1B74846C40FAFFFF1FAB723240FEFFFFE37A846C40FDFFFF5F357332400D00000482846C40F5FFFF9FBE7332400F00006C89846C40FFFFFFDF46743240F0FFFF2B91846C4007000060CE7432400000003C99846C40FCFFFF9F5475324003000094A1846C40020000E0D975324009000044AA846C40F4FFFFDF5D7632400000003CB3846C40F8FFFFDFE07632400D00007CBC846C40030000A0627732400400000CC6846C40FAFFFF1FE3773240060000ECCF846C400C00002062783240FAFFFF13DA846C40F7FFFF1FE078324004000084E4846C40FCFFFF9F5C7932400000003CEF846C40000000A0D7793240EFFFFF3BFA846C400B000060517A3240F3FFFF8305856C400B000060C97A32400C00001411856C40F7FFFF1F407B3240FEFFFFE31C856C40FDFFFF5FB57B3240FBFFFF0329856C40F8FFFFDF287C3240FEFFFF5B35856C40030000A09A7C3240F3FFFFFB41856C400D0000E00A7D3240070000DC4E856C40F9FFFF9F797D3240F3FFFFFB5B856C4007000060E67D3240F5FFFF6369856C400B000060517E3240FBFFFF0377856C40030000A0BA7E3240070000DC84856C400C000020227F3240050000FC92856C40090000E0877F32401100004CA1856C400E0000A0EB7F3240F5FFFFDBAF856C40FDFFFF5F4D803240020000A4BE856C40FDFFFF5FAD803240F0FFFFA3CD856C40FAFFFF1F0B813240070000DCDC856C400800002067813240FFFFFF4BEC856C40F8FFFFDFC0813240060000ECFB856C40F8FFFFDF18823240110000C40B866C40F5FFFF9F6E823240080000CC1B866C400C000020C2823240F3FFFFFB2B866C400E0000A013833240060000643C866C400D0000E062833240050000FC4C866C40F7FFFF1FB0833240F7FFFFBB5D866C40FAFFFF1FFB833240F9FFFFAB6E866C400E0000A043843240110000C47F866C400C0000208A843240FBFFFF0391866C4007000060CE843240FDFFFF6BA2866C400000006010853240FCFFFFF3B3866C40090000E04F8532400A0000ACC5866C40F3FFFF1F8D853240FCFFFF7BD7866C40090000E0C7853240FCFFFF7BE9866C40000000600086324003000094FB866C40F5FFFF9F36863240080000CC0D876C400C0000206A863240F1FFFF1B20876C400E0000A09B863240F1FFFF9332876C40F9FFFF5FCA8632400200001C45876C40FFFFFFDFF6863240110000C457876C400A0000A020873240040000846A876C40F7FFFF1F48873240FEFFFF5B7D876C40F3FFFF1F6D8732400900004490876C40000000A08F873240F7FFFF43A3876C40000000A0AF873240F6FFFF53B6876C40060000E0CC87324005000074C9876C40090000E0E7873240020000A4DC876C400000006000883240F5FFFFDBEF876C40FEFFFF1F16883240F9FFFF2303886C400B000060298832400D00007C16886C400C0000203A883240F5FFFFDB29886C40F7FFFF1F488832400000003C3D886C40FBFFFFDF53883240F9FFFFAB50886C40060000E05C883240FAFFFF1364886C4004000060638832400C00008C77886C400800002067883240050000FC8A886C400000006068883240F4FFFF739E886C4008000020678832400F0000E4B1886C40FAFFFF1F6388324007000054C5886C40060000E05C883240090000BCD8886C40FBFFFFDF538832400B000024EC886C40F7FFFF1F48883240FCFFFF7BFF886C400C0000203A883240100000D412896C400B00006029883240F1FFFF1B26896C40FEFFFF1F16883240FEFFFF5B39896C40F7FFFF1F00883240FBFFFF8B4C896C40090000E0E78732400A0000AC5F896C40060000E0CC873240090000BC72896C40F6FFFF5FAF873240F7FFFFBB85896C40000000A08F873240020000A498896C40F3FFFF1F6D87324005000074AB896C40F7FFFF1F48873240F8FFFF33BE896C400A0000A020873240070000DCD0896C40F5FFFF9FF68632400F00006CE3896C40F9FFFF5FCA863240F5FFFFDBF5896C40040000609B863240F8FFFF33088A6C400C0000206A863240FDFFFF6B1A8A6C400700006036863240040000842C8A6C4000000060008632400D00007C3E8A6C40090000E0C7853240F6FFFF53508A6C40060000E08C8532400D000004628A6C40000000A04F85324003000094738A6C40F7FFFF1F10853240050000FC848A6C40FEFFFF1FCE843240EFFFFF3B968A6C400C0000208A84324007000054A78A6C400E0000A043843240EFFFFF3BB88A6C400D0000E0FA833240050000FCC88A6C40090000E0AF83324003000094D98A6C400D0000E062833240F3FFFFFBE98A6C400400006013833240F8FFFF33FA8A6C40020000E0C1823240F8FFFF330A8B6C40070000606E8232400400000C1A8B6C400A0000A0188232400A0000AC298B6C400A0000A0C08132400200001C398B6C40FFFFFFDF66813240F6FFFF53488B6C400D0000E00A81324007000054578B6C40F3FFFF1FAD803240F1FFFF1B668B6C40F3FFFF1F4D803240F9FFFFAB748B6C4004000060EB7F3240050000FC828B6C40000000A0877F32400200001C918B6C40020000E0217F32400E0000F49E8B6C40F9FFFF5FBA7E3240F1FFFF93AC8B6C4001000020517E3240FCFFFFF3B98B6C40FEFFFF1FE67D32400200001CC78B6C4001000020797D3240F3FFFFFBD38B6C40030000A00A7D32400B00009CE08B6C40F9FFFF5F9A7C32400E0000F4EC8B6C4000000060287C3240F2FFFF0BF98B6C40060000E0B47B3240FEFFFFE3048C6C40090000E03F7B3240F4FFFF73108C6C4001000020C97A3240F7FFFFBB1B8C6C4001000020517A3240090000BC268C6C40F6FFFF5FD779324005000074318C6C40050000205C7932400F0000E43B8C6C40090000E0DF7832400400000C468C6C40020000E0617832400F0000E44F8C6C40030000A0E277324005000074598C6C400C00002062773240090000BC628C6C400A0000A0E0763240010000B46B8C6C40070000A05D7632401000005C748C6C400B000060D9753240090000BC7C8C6C40F2FFFF5F54753240000000C4848C6C40F4FFFFDFCD743240040000848C8C6C40F5FFFF9F46743240FCFFFFF3938C6C40FEFFFF1FBE733240F2FFFF0B9B8C6C40060000E034733240F5FFFFDBA18C6C40030000A0AA723240F6FFFF53A88C6C40000000A01F7232400D00007CAE8C6C400E0000A093713240F6FFFF53B48C6C40FFFFFFDF06713240FFFFFFD3B98C6C400B00006079703240FBFFFF03BF8C6C40FAFFFF1FEB6F3240F5FFFFDBC38C6C40050000205C6F324006000064C88C6C40FCFFFF9FCC6E3240F1FFFF93CC8C6C40FCFFFF9F3C6E3240F4FFFF73D08C6C4005000020AC6D3240F3FFFFFBD38C6C400D0000E01A6D3240F0FFFF2BD78C6C400B000060896C32400D000004DA8C6C40F6FFFF5FF76B3240FBFFFF8BDC8C6C40F3FFFF1F656B3240090000BCDE8C6C40F9FFFF5FD26A3240F1FFFF93E08C6C40000000A03F6A3240FAFFFF13E28C6C40F2FFFF5FAC693240F7FFFF43E38C6C400100002019693240F1FFFF1BE48C6C40F4FFFFDF85683240F1FFFF93E48C6C40F9FFFF5FF2673240090000BCE48C6C40F5FFFF9F5E673240FBFFFF8BE48C6C40FAFFFF1FCB6632400400000CE48C6C40000000A037663240F0FFFF2BE38C6C40F2FFFF5FA4653240F3FFFFFBE18C6C40F8FFFFDF10653240FDFFFF6BE08C6C40F4FFFFDF7D643240FBFFFF8BDE8C6C40FAFFFF1FEB633240F6FFFF53DC8C6C400000006058633240080000CCD98C6C40FEFFFF1FC6623240FEFFFFE3D68C6C40F2FFFF5F346232400A0000ACD38C6C40030000A0A2613240F1FFFF1BD08C6C40F9FFFF9F11613240EFFFFF3BCC8C6C4001000020816032400D000004C88C6C4001000020F15F324005000074C38C6C40F9FFFF9F615F3240F1FFFF93BE8C6C400D0000E0D25E3240FEFFFF5BB98C6C40FCFFFF9F445E3240FFFFFFD3B38C6C4008000020B75D3240F3FFFFFBAD8C6C40030000A02A5D3240080000CCA78C6C40F5FFFF9F9E5C32401100004CA18C6C400E0000A0135C32400D00007C9A8C6C400B000060895B3240FEFFFF5B938C6C40F7FFFF1F005B32400F0000E48B8C6C40090000E0775A32400B000024848C6C400A0000A0F0593240FAFFFF137C8C6C40F9FFFF5F6A5932400A0000AC738C6C40F3FFFF1FE5583240FBFFFF036B8C6C4001000020615832400D000004628C6C4007000060DE573240090000BC588C6C40060000E05C573240F9FFFF234F8C6C40F2FFFF5FDC563240F7FFFF43458C6C40FDFFFF5F5D5632400200001C3B8C6C40000000A0DF553240F9FFFFAB308C6C40FAFFFF1F63553240060000EC258C6C40F7FFFF1FE8543240F4FFFFEB1A8C6C40F5FFFF9F6E543240FAFFFF9B0F8C6C40F5FFFF9FF65332400400000C048C6C40090000E07F533240F8FFFF33F88B6C400D0000E00A533240F1FFFF1BEC8B6C40000000A097523240F7FFFFBBDF8B6C40070000A0255232400200001CD38B6C40070000A0B5513240EFFFFF3BC68B6C4008000020475132400200001CB98B6C40F9FFFF5FDA503240010000B4AB8B6C40F6FFFF5F6F503240FAFFFF139E8B6C400700006006503240EFFFFF3B908B6C40FFFFFFDF9E4F32400B000024828B6C400B000060394F3240080000CC738B6C40F4FFFFDFD54E32400000003C658B6C4005000020744E3240F4FFFF73568B6C40F2FFFF5F144E324005000074478B6C4007000060B64D324009000044388B6C40030000A05A4D3240100000D4288B6C40F8FFFFDF004D32400A000034198B6C4001000020A94C3240F5FFFF63098B6C400E0000A0534C3240F5FFFF63F98A6C40F7FFFF1F004C3240F0FFFF2BE98A6C40F5FFFF9FAE4B3240F6FFFFCBD88A6C40F6FFFF5F5F4B3240F8FFFF33C88A6C40F9FFFF5F124B3240FCFFFF7BB78A6C40000000A0C74A3240FBFFFF8BA68A6C40FFFFFFDF7E4A3240FCFFFF7B958A6C400A0000A0384A324009000044848A6C40F2FFFF5FF4493240070000DC728A6C40030000A0B249324007000054618A6C40FAFFFF1F73493240F0FFFFA34F8A6C40FEFFFF1F36493240FFFFFFD33D8A6C4004000060FB4832400F0000E42B8A6C400D0000E0C2483240080000CC198A6C40060000E08C483240FAFFFF9B078A6C4001000020594832401100004CF5896C40090000E027483240070000DCE2896C4001000020F94732401000005CD0896C40060000E0CC473240F7FFFFBBBD896C400D0000E0A2473240FBFFFF03AB896C400E0000A07B473240F8FFFF3398896C40F5FFFF9F564732401100004C85896C400500002034473240F6FFFF5372896C40F2FFFF5F144732401100004C5F896C40FFFFFFDFF6463240F8FFFF334C896C4005000020DC463240F2FFFF0B39896C400E0000A0C3463240FFFFFFD325896C40F4FFFFDFAD463240F1FFFF9312896C40030000A09A463240F7FFFF43FF886C400C0000208A463240FCFFFFF3EB886C40FBFFFFDF7B463240F1FFFF93D8886C4000000060704632400A000034C5886C40F6FFFF5F67463240080000CCB1886C40F8FFFFDF604632401000005C9E886C40F3FFFF1F5D463240 | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14144 - 249 | Pangboche | 0101000020C89901001BF6DF6511536C4069A19D9742473140 | 0103000020C89901000100000069010000FBFFFF033F536C40FBFFFFDF63313140F8FFFF3332536C40FAFFFF1F63313140FEFFFF5B25536C40FBFFFFDF63313140FBFFFF8B18536C40F5FFFF9F66313140010000B40B536C400D0000E06A313140F4FFFFEBFE526C40F8FFFFDF70313140F1FFFF1BF2526C400000006078313140FEFFFF5BE5526C40020000E0813131400B00009CD8526C40060000E08C313140F5FFFFDBCB526C40020000E099313140F0FFFF2BBF526C4000000060A831314004000084B2526C4000000060B8313140060000ECA5526C40F9FFFF5FCA3131400700005499526C40F4FFFFDFDD313140F6FFFFCB8C526C40FAFFFF1FF3313140F6FFFF5380526C40020000E009323140060000EC73526C40F9FFFF5F223231400C00008C67526C40FCFFFF9F3C3231400000003C5B526C400A0000A058323140FBFFFF034F526C40FEFFFF1F76323140100000D442526C40F3FFFF1F95323140090000BC36526C40F4FFFFDFB5323140EFFFFFB32A526C40F7FFFF1FD8323140000000C41E526C4005000020FC323140F4FFFFEB12526C40F9FFFF9F21333140F9FFFF2307526C400A0000A048333140FCFFFF7BFB516C400B000060713331400F0000E4EF516C400E0000A09B33314006000064E4516C40F6FFFF5FC7333140FBFFFF03D9516C40FCFFFF9FF4333140F7FFFFBBCD516C400400006023343140F1FFFF93C2516C400E0000A053343140F3FFFF83B7516C40FDFFFF5F85343140F1FFFF93AC516C400A0000A0B8343140F7FFFFBBA1516C40F3FFFF1FED343140F2FFFF0B97516C400400006023353140F4FFFF738C516C400D0000E05A3531400D00000482516C40FBFFFFDF93353140010000B477516C40FEFFFF1FCE353140F3FFFF836D516C40020000E009363140FCFFFF7B63516C40FFFFFFDF463631400300009459516C40F3FFFF1F85363140080000CC4F516C40060000E0C4363140F8FFFF3346516C40F4FFFFDF05373140090000BC3C516C40090000E0473731400F00006C33516C40040000608B373140090000442A516C40F7FFFF1FD0373140F7FFFF4321516C40FEFFFF1F16383140FDFFFF6B18516C40F3FFFF1F5D383140110000C40F516C40FDFFFF5FA53831400000003C07516C40FFFFFFDFEE383140F4FFFFEBFE506C400B00006039393140090000BCF6506C40F3FFFF1F85393140000000C4EE506C40020000E0D1393140F4FFFFEBE6506C40000000A01F3A31401100004CDF506C40070000606E3A3140FFFFFFD3D7506C40FEFFFF1FBE3A3140F1FFFF93D0506C40080000200F3B3140FCFFFF7BC9506C40F8FFFFDF603B3140F1FFFF93C2506C4004000060B33B3140F5FFFFDBBB506C4008000020073C3140FEFFFF5BB5506C400E0000A05B3C3140FBFFFF03AF506C40F8FFFFDFB03C3140FEFFFFE3A8506C4008000020073D31400E0000F4A2506C40F4FFFFDF5D3D31400000003C9D506C40070000A0B53D3140010000B497506C40FEFFFF1F0E3E31400600006492506C40F6FFFF5F673E3140F7FFFF438D506C400B000060C13E3140F6FFFF5388506C40FBFFFFDF1B3F3140F0FFFFA383506C4008000020773F3140F9FFFF237F506C40FAFFFF1FD33F3140100000D47A506C40F6FFFF5F2F403140000000C476506C40F2FFFF5F8C403140FEFFFFE372506C40020000E0E94031400000003C6F506C40090000E047413140080000CC6B506C4007000060A6413140F1FFFF9368506C40FDFFFF5F054231400300009465506C40FCFFFF9F64423140F6FFFFCB62506C40F2FFFF5FC4423140EFFFFF3B60506C40FCFFFF9F244331400F0000E45D506C40060000E084433140110000C45B506C40070000A0E5433140F5FFFFDB59506C40F5FFFF9F46443140F8FFFF3358506C40090000E0A7443140090000BC56506C400B00006009453140FCFFFF7B55506C400D0000E06A4531400D00007C54506C40FCFFFF9FCC453140010000B453506C40F5FFFF9F2E463140F9FFFF2353506C400000006090463140F6FFFFCB52506C40F9FFFF5FF2463140F9FFFFAB52506C40FCFFFF9F54473140000000C452506C40F5FFFF9FB64731400200001C53506C400A0000A0184831400A0000AC53506C40030000A07A483140FDFFFF6B54506C40FCFFFF9FDC4831400500007455506C40070000603E493140F9FFFFAB56506C40090000E09F493140F1FFFF1B58506C400B000060014A3140110000C459506C40030000A0624A31400A0000AC5B506C400E0000A0C34A3140080000CC5D506C40F2FFFF5F244B3140F1FFFF1B60506C40FCFFFF9F844B3140F9FFFFAB62506C40060000E0E44B31400500007465506C40FCFFFF9F444C3140F4FFFF7368506C40FBFFFFDFA34C3140F0FFFFA36B506C400D0000E0024D31400C0000146F506C400B000060614D3140EFFFFFB372506C40F6FFFF5FBF4D3140F1FFFF9376506C40060000E01C4E3140020000A47A506C40020000E0794E3140F4FFFFEB7E506C4007000060D64E31400F00006C83506C40F9FFFF5F324F3140F1FFFF1B88506C40070000A08D4F3140FBFFFF038D506C40F7FFFF1FE84F31400B00002492506C400C000020425031400500007497506C40040000609B503140050000FC9C506C40FBFFFFDFF3503140EFFFFFB3A2506C400E0000A04B513140020000A4A8506C40030000A0A2513140000000C4AE506C40F8FFFFDFF85131400C000014B5506C40FEFFFF1F4E52314003000094BB506C40030000A0A2523140FFFFFF4BC2506C4007000060F6523140F0FFFF2BC9506C40010000204953314009000044D0506C400D0000E09A5331400C00008CD7506C400E0000A0EB533140050000FCDE506C400E0000A03B5431400B00009CE6506C40F9FFFF5F8A543140F4FFFF73EE506C40F7FFFF1FD8543140FDFFFF6BF6506C40060000E024553140F1FFFF93FE506C400A0000A070553140F4FFFFEB06516C4004000060BB5531400F00006C0F516C40FCFFFF9F04563140F1FFFF1B18516C40F3FFFF1F4D5631400E0000F420516C400500002094563140FCFFFFF329516C400C000020DA5631400200001C33516C40FFFFFFDF1E573140FDFFFF6B3C516C40F9FFFF5F625731400F0000E445516C40FCFFFF9FA4573140FCFFFF7B4F516C40070000A0E5573140F7FFFF4359516C40FDFFFF5F25583140F0FFFF2B63516C40FBFFFFDF635831400A0000346D516C40F8FFFFDFA0583140F5FFFF6377516C40FCFFFF9FDC583140010000B481516C40FFFFFFDF165931400100002C8C516C40090000E04F593140000000C496516C40F6FFFF5F8759314005000074A1516C40070000A0BD593140FFFFFF4BAC516C40F9FFFF5FF25931400000003CB7516C40070000A0255A3140FFFFFF4BC2516C40F6FFFF5F575A3140FCFFFF7BCD516C40000000A0875A3140000000C4D8516C4007000060B65A31400B000024E4516C40FBFFFFDFE35A3140F0FFFFA3EF516C40000000A00F5B31400000003CFB516C40020000E0395B3140F4FFFFEB06526C40F9FFFF5F625B3140EFFFFFB312526C40F9FFFF9F895B3140F1FFFF931E526C4008000020AF5B3140040000842A526C40FAFFFF1FD35B3140FBFFFF8B36526C40FDFFFF5FF55B3140020000A442526C40FEFFFF1F165C3140100000D44E526C40FDFFFF5F355C31400C0000145B526C400D0000E0525C3140F5FFFF6367526C40F5FFFF9F6E5C3140110000C473526C40F8FFFFDF885C3140F8FFFF3380526C400B000060A15C3140EFFFFFB38C526C4000000060B85C31400000003C99526C40070000A0CD5C3140FFFFFFD3A5526C4001000020E15C3140F4FFFF73B2526C40FAFFFF1FF35C31400200001CBF526C40FAFFFF1F035D3140080000CCCB526C40F9FFFF9F115D3140FBFFFF8BD8526C40F5FFFF9F1E5D31401100004CE5526C40F9FFFF9F295D3140FAFFFF13F2526C40FAFFFF1F335D3140FEFFFFE3FE526C40030000A03A5D3140010000B40B536C400A0000A0405D3140FBFFFF8B18536C40060000E0445D3140F5FFFF6325536C40000000A0475D3140EFFFFF3B32536C4000000060485D31400C0000143F536C40000000A0475D3140060000EC4B536C40060000E0445D3140090000BC58536C400A0000A0405D31400C00008C65536C40030000A03A5D31401000005C72536C40FAFFFF1F335D3140F9FFFF237F536C40F9FFFF9F295D3140060000EC8B536C40070000601E5D3140020000A498536C40F9FFFF9F115D314007000054A5536C40FAFFFF1F035D31400D000004B2536C400D0000E0F25C3140020000A4BE536C4001000020E15C31400000003CCB536C40070000A0CD5C3140110000C4D7536C4000000060B85C3140EFFFFF3BE4536C400B000060A15C3140F9FFFFABF0536C40F8FFFFDF885C3140F2FFFF0BFD536C40F5FFFF9F6E5C3140FEFFFF5B09546C400D0000E0525C3140FAFFFF9B15546C40F3FFFF1F355C3140080000CC21546C40FEFFFF1F165C31400F0000E42D546C40FDFFFF5FF55B3140060000EC39546C40FAFFFF1FD35B31400F0000E445546C4008000020AF5B3140F7FFFFBB51546C40F9FFFF9F895B3140F3FFFF835D546C40F9FFFF5F625B31400A00003469546C40F9FFFF9F395B3140F6FFFFCB74546C40F6FFFF5F0F5B3140FFFFFF4B80546C400E0000A0E35A31400A0000AC8B546C4007000060B65A31400E0000F496546C40000000A0875A31400B000024A2546C40F6FFFF5F575A31400A000034AD546C40FDFFFF5F255A31400B000024B8546C400C000020F2593140050000FCC2546C40FDFFFF5FBD593140010000B4CD546C40F6FFFF5F8759314009000044D8546C40090000E04F593140090000BCE2546C40FFFFFFDF16593140F2FFFF0BED546C40F2FFFF5FDC5831400000003CF7546C400A0000A0A05831401100004C01556C400E0000A0635831400A0000340B556C40FDFFFF5F255831400E0000F414556C40070000A0E5573140F1FFFF931E556C40FCFFFF9FA45731400400000C28556C40F9FFFF5F62573140FEFFFF5B31556C40FFFFFFDF1E573140040000843A556C400C000020DA563140FCFFFF7B43556C400500002094563140F6FFFF534C556C40060000E04C563140FBFFFF0355556C40FCFFFF9F04563140F3FFFF835D556C40FAFFFF1FBB553140F5FFFFDB65556C4000000060705531400D0000046E556C40060000E0245531400D00000476556C40F7FFFF1FD8543140FFFFFFD37D556C400C0000208A5431400500007485556C40040000603B543140FEFFFFE38C556C400E0000A0EB5331400100002C94556C40030000A09A533140F7FFFF439B556C40F8FFFFDF485331400B000024A2556C40FEFFFF1FF6523140070000DCA8556C40030000A0A2523140FEFFFF5BAF556C40F4FFFFDF4D5231400A0000ACB5556C400A0000A0F8513140080000CCBB556C40F9FFFF5FA2513140F7FFFFBBC1556C40040000604B51314005000074C7556C400E0000A0F3503140050000FCCC556C40FAFFFF1F9B503140FFFFFF4BD2556C40020000E0415031400F00006CD7556C40090000E0E74F3140F6FFFF53DC556C40FDFFFF5F8D4F3140FBFFFF03E1556C400C000020324F3140F3FFFF83E5556C40FEFFFF1FD64E3140080000CCE9556C40F9FFFF9F794E3140F5FFFFDBED556C40FCFFFF9F1C4E3140010000B4F1556C4008000020BF4D3140FEFFFF5BF5556C4001000020614D3140000000C4F8556C40030000A0024D3140F3FFFFFBFB556C400E0000A0A34C3140050000FCFE556C40F2FFFF5F444C3140110000C401566C40FCFFFF9FE44B3140FFFFFF4B04566C40F2FFFF5F844B3140020000A406566C4005000020244B3140000000C408566C4004000060C34A3140020000A40A566C40F9FFFF5F624A3140F6FFFF530C566C4001000020014A3140110000C40D566C40000000A09F493140050000FC0E566C40FEFFFF1F3E493140F3FFFFFB0F566C40F2FFFF5FDC483140000000C410566C40F9FFFF5F7A4831400700005411566C400000006018483140F0FFFFA311566C4007000060B6473140110000C411566C40F2FFFF5F54473140F0FFFFA311566C40F9FFFF5FF24631401100004C11566C40F7FFFF1F90463140090000BC10566C40070000602E463140060000EC0F566C40F2FFFF5FCC453140F4FFFFEB0E566C40030000A06A4531400A0000AC0D566C400100002009453140EFFFFF3B0C566C40000000A0A7443140FBFFFF8B0A566C400700006046443140020000A408566C40FDFFFF5FE54331400400008406566C40FCFFFF9F844331400100002C04566C40F2FFFF5F24433140FAFFFF9B01566C4005000020C4423140100000D4FE556C40F2FFFF5F64423140FFFFFFD3FB556C40F3FFFF1F054231400B00009CF8556C40FEFFFF1FA6413140F0FFFF2BF5556C40000000A047413140F3FFFF83F1556C40F9FFFF9FE9403140F0FFFFA3ED556C40050000208C40314003000094E9556C40080000202F403140F7FFFF43E5556C400D0000E0D23F3140000000C4E0556C40FFFFFFDF763F3140FAFFFF13DC556C400E0000A01B3F3140F9FFFF23D7556C4001000020C13E31400D000004D2556C4008000020673E3140EFFFFFB3CC556C40FEFFFF1F0E3E3140F0FFFF2BC7556C40070000A0B53D314005000074C1556C40F4FFFFDF5D3D3140F3FFFF83BB556C40FFFFFFDF063D3140F5FFFF63B5556C400A0000A0B03C3140F2FFFF0BAF556C40040000605B3C3140FBFFFF8BA8556C40FFFFFFDF063C3140FFFFFFD3A1556C4004000060B33B3140F4FFFFEB9A556C400A0000A0603B3140FFFFFFD393556C40FFFFFFDF0E3B3140F1FFFF938C556C40FEFFFF1FBE3A31400200001C85556C40FEFFFF1F6E3A3140050000747D556C40F6FFFF5F1F3A3140F0FFFFA375556C40F9FFFF9FD13931400A0000AC6D556C40060000E084393140FCFFFF7B65556C400B00006039393140F9FFFF235D556C40F5FFFF9FEE383140020000A454556C40FDFFFF5FA5383140F3FFFFFB4B556C40F3FFFF1F5D383140F9FFFF2343556C40F4FFFFDF153831400B0000243A556C40F7FFFF1FD0373140050000FC30556C40040000608B3731400A0000AC27556C40090000E047373140F8FFFF331E556C40070000A005373140F1FFFF9314556C40FCFFFF9FC4363140100000D40A556C40060000E084363140F4FFFFEB00556C40F5FFFF9F46363140FEFFFFE3F6546C40F9FFFF9F09363140EFFFFFB3EC546C40F4FFFFDFCD35314006000064E2546C400E0000A093353140060000ECD7546C40030000A05A353140FEFFFF5BCD546C40FAFFFF1F23353140020000A4C2546C40F3FFFF1FED343140FFFFFFD3B7546C4000000060B8343140FEFFFFE3AC546C40F3FFFF1F85343140FFFFFFD3A1546C400400006053343140020000A496546C40FAFFFF1F23343140FEFFFF5B8B546C40F2FFFF5FF4333140F3FFFFFB7F546C4008000020C73331400400008474546C40040000609B333140F4FFFFEB68546C4001000020713331400000003C5D546C400A0000A048333140FCFFFF7B51546C40F9FFFF9F21333140FAFFFF9B45546C40FBFFFFDFFB3231400A0000AC39546C40F7FFFF1FD83231400A0000AC2D546C40070000A0B53231400C00008C21546C40F3FFFF1F95323140F5FFFF6315546C40F4FFFFDF75323140F9FFFF2309546C400000006058323140070000DCFC536C40FCFFFF9F3C3231400D00007CF0536C40F9FFFF5F223231400400000CE4536C40020000E00932314003000094D7536C40FAFFFF1FF3313140F2FFFF0BCB536C40F4FFFFDFDD3131400D00007CBE536C40F9FFFF5FCA313140F5FFFFDBB1536C4000000060B83131400A000034A5536C40F7FFFF1FA83131400400008498536C40F9FFFF9F99313140080000CC8B536C40060000E08C313140F2FFFF0B7F536C40020000E0813131400900004472536C400000006078313140FCFFFF7B65536C40F8FFFFDF70313140F9FFFFAB58536C400D0000E06A313140F5FFFFDB4B536C40F5FFFF9F66313140FBFFFF033F536C40FBFFFFDF63313140 | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14145 - 301 | Nix Olympica | 0101000020C89901000000000000C06C402C095FC797C83340 | | 01-01-1958 | al | http://planetarynames.wr.usgs.gov/Feature/4314 - 1849 | Hermes Patera | 0101000020C89901000AD7A3703D526C4014AE47E17A543240 | 0103000020C89901000100000027000000C60000C0E0486C4073FFFFFF271132409A00004043486C402DFFFFFFBB223240160000C02C486C4073FFFFFF793732409A0000807B486C40E7FEFFFF294B32408400006032486C40E7FEFFFFD45432406E0000C059486C40E7FEFFFF7F5E3240160000C03A496C402DFFFFFF1B77324042000040404B6C4073FFFFFF47873240BEFFFFBF534E6C40E7FEFFFFEF93324016000080834F6C400AFFFFFF279832406E0000C0C9506C402DFFFFFF439A3240BEFFFFBF8B526C402DFFFFFFAB9B324042000040CC556C402DFFFFFF0B963240160000C096566C40BAFFFFFFD39132406E0000C0D1576C4073FFFFFF178A32409A00004023596C40BAFFFFFFC38332406E0000C0A15A6C402DFFFFFF8B7F3240BEFFFF7FD15B6C40BAFFFFFF157D3240000000009C5C6C4096FFFFFFDD78324042000040D45C6C4073FFFFFF97733240EAFFFF3F015D6C402DFFFFFF0B69324092FFFF3F2E5D6C40E7FEFFFF4F6132406E0000C0715D6C402DFFFFFF8B523240EAFFFF3F015D6C40BAFFFFFF434032409A000040F35B6C4073FFFFFF173032409A0000408B5A6C402DFFFFFF8B253240160000C066596C402DFFFFFF1B1D3240EAFFFF3FC9586C402DFFFFFF4B1A3240160000C04A576C40BAFFFFFF831E3240160000C0E2556C40BAFFFFFF232432406E00004064546C402DFFFFFFA727324000000040CF526C4050FFFFFF7D24324092FFFF3FEE516C4073FFFFFF371F32409A000040B3506C4073FFFFFFC7163240160000C08E4F6C4073FFFFFF27113240C60000C0804E6C40E7FEFFFF5F153240C60000C0644C6C40BAFFFFFF131632409A0000405F4A6C4073FFFFFFF7133240C60000C0E0486C4073FFFFFF27113240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15690 - 1688 | Olympus Rupes | 0101000020C8990100EE68117FEF4D6C408327CB1FE7663240 | 0102000020C89901004C0000000000009CBE6D6C40000000E01FEF36400000008CF97D6C40000000A0EBA736400000004C108B6C4000000060486D3640000000A4D2906C4000000060C64B3640000000E488956C40000000608319364000000074F59E6C400000006083193640000000A4E6B36C40000000205EBD35400000009421C46C40000000605A7A35400000000476CB6C4000000020E74335400000001C3ECC6C400000002045163540000000DCC6C66C40000000203B8E3440000000CCF8D66C40000000E0CB2E3340000000F4B0DB6C40000000600E803240000000F4B0DB6C40000000E0F70E3240000000F4B0DB6C40000000A0D6F53140000000FC36DC6C400000002088FA30400000000C43DD6C40000000E092A23040000000B480D76C4000000060BF6330400000009468D56C40000000200D3E30400000005CBED16C40000000C012F62F40000000349ACE6C40000000C04DA22F400000000476CB6C40000000C024032F400000006C83C16C400000004003EA2E4000000064A1BA6C40000000C0DB472E400000008448B16C40000000406E792D40000000EC55A76C4000000040A5E22C4000000044D19B6C40000000C05E6D2C40000000AC58916C40000000C099192C400000000CE0866C40000000C0DC4B2C40000000544F7A6C40000000C0DC4B2C400000003CF0666C40000000C017F82B400000008C6B5B6C4000000040B7EF2B40000000E4E64F6C40000000C099192C4000000024D0426C40000000C0318B2B40000000A4E9396C4000000040D1822B400000001CC8316C40000000C04AC32B40000000AC842C6C4000000040FC1D2C400000000C2A1E6C40000000406E792D40000000B467186C40000000406E792D40000000FCD60B6C4000000040A9252D400000004446FF6B40000000C0EF9A2D40000000FC48E96B40000000C079422E40000000EC6FD66B400000004081C82E400000006C0FCE6B40000000C0E1D02E400000007CD4BD6B40000000C0E1D02E40000000D44FB26B40000000C0E9562F40000000941FAE6B40000000205B1830400000006CFBAA6B40000000E053B330400000007C8DAC6B4000000060A91331400000001439A56B40000000606E673140000000A47B9C6B40000000A01A8831400000009CD89C6B40000000E084D831400000006491A46B400000006051C33140000000BCBDB06B4000000060E19D31400000005CBCBB6B400000002028133240000000BC04C26B4000000020609D32400000006CC8BC6B40000000E033DC3240000000F467B46B40000000A0B9403340000000ECE1B36B40000000A0AE983340000000248CB76B4000000060772F3440000000845ABE6B40000000E03FC63440000000C48AC26B4000000020E743354000000084A1CF6B40000000E0AFDA354000000074DCDF6B40000000A03982364000000044FFED6B40000000E01FEF3640000000E4FDF86B40000000A062213740000000645E016C40000000A0A1103740000000DCBE096C40000000A0E0FF3640000000A45B176C40000000E01FEF364000000024BC1F6C40000000208FE23640000000AC28296C40000000E01FEF36400000007C4B376C40000000E0100437400000006C86476C40000000E0922537400000001C91536C40000000E014473740000000ECB3616C4000000020021937400000009CBE6D6C40000000E01FEF3640 | 01-01-1976 | ru | http://planetarynames.wr.usgs.gov/Feature/4454 - 1847 | Zeus Patera | 0101000020C89901000AD7A3703D626C40A4703D0AD7633240 | 0103000020C899010001000000350000008C01008025506C40B0000000E6AC3240DC0000807F506C40B000000056B5324034010080BA516C406A0000001AC43240DC00008003546C406A0000002AD232408400008000576C406A0000009ADA324008010000415A6C406A0000000AE33240DC000080275D6C406A0000000AE3324008010000E15F6C406A0000003AE032403401008032616C40B000000086DF324034010080CA5F6C406A000000FAD43240B00000005A5F6C40B000000036C63240DC000080F75F6C4023000000EEB3324008010000FD616C40B0000000A6A1324008010000CD646C40F6000000B29532403401008086676C406A0000007A913240DC000000B9696C40B00000001A97324084000080B06A6C40F6000000F2A03240340100800A6B6C4023000000AEA83240B0000000B66C6C40B0000000669632408C010080AD6D6C40230000007E7E324084000080806D6C40F6000000B268324084000080CC6C6C406A000000CA50324008010000896C6C406A0000004A3A324060010000F46A6C40F6000000921F32408C01008075696C406A000000DA04324034010080D2666C406A0000002AF13140B0000000FA646C40F600000052E731408C01008021636C406A0000004AE03140B00000000E606C40230000008ED83140DC000080DB5D6C40B000000026D73140080100005D5C6C40B000000026D7314008010000115D6C406A0000004AE03140B00000003E5D6C40F6000000F2EC314060010000E45C6C40B0000000E6F8314058000000035C6C40230000008E053240DC000080575A6C406A0000001A103240DC000080EF586C40230000003E19324060010000C85A6C40F60000000228324034010080465C6C40F6000000B23B3240DC000080275D6C406A000000CA503240DC000080735C6C40B00000009666324060010000305C6C40F600000092793240580000009B5A6C40F6000000028232408C0100802D576C406A000000DA8B324058000000AF556C40F6000000B2953240DC00008003546C40230000006E9D324058000000DF526C40F6000000229E3240B00000001A546C406A0000002AA5324058000000AF556C40F600000092A6324034010080D6536C40F600000062A932408400008014526C40B000000076A43240DC000080CB4F6C40B000000046A732408C01008025506C40B0000000E6AC3240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15689 - 1848 | Athena Patera | 0101000020C8990100F6285C8FC2656C403D0AD7A370BD3240 | 0103000020C89901000100000014000000EF0100E0ED606C4050FFFFFF19C432403F0100E047616C4096FFFFFFA5CE3240050200A0F0616C4096FFFFFF15D73240050200A0A4626C400AFFFFFF1DDE3240D901002023646C4073FFFFFF47E13240AD0100A0A1656C40BAFFFFFF93E03240550100A036676C40BAFFFFFFC3DD32403F0100E003696C4073FFFFFF37D33240290100201D6A6C40E7FEFFFF8FC6324013010060826A6C40E7FEFFFF4FBB3240E70000E0986A6C400AFFFFFF1DB132403F0100E0B7696C4050FFFFFFF9A73240130100601A696C402DFFFFFF7B9E3240D9010020A7676C40E7FEFFFF8F993240550100A0CE656C40E7FEFFFF8F9932403F0100E063636C40BAFFFFFFE39F3240FD0000A0C3616C40E7FEFFFF6FAA324081010020CC606C40DDFFFFFFA1B4324013010060AA606C4050FFFFFF79BE3240EF0100E0ED606C4050FFFFFF19C43240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15693 - 1850 | Apollo Patera | 0101000020C899010066666666664E6C40713D0AD7A3F03140 | 0103000020C899010001000000160000001002000022496C406BFEFFFFE6E83140C0020000C8486C4062FFFFFF48F031407E0200C08F486C40F8FEFFFF2EFB314094020080DE486C40B2FEFFFF2207324002030040B4496C406BFEFFFF1613324052020040764B6C40F8FEFFFF4E17324018030000D34C6C40F8FEFFFF4E17324052020040FA4E6C401BFFFFFFBC123240D60200C0D2506C408FFEFFFFB40B3240D60200C03A526C408FFEFFFF140632406802000035546C408FFEFFFF64F23140D60200C056546C40D5FEFFFFD0E0314052020040E6536C40F8FEFFFF9ED631407E0200C0CF536C4062FFFFFF88CE3140AA02004005536C406BFEFFFFF6C93140AA020040E9506C403EFFFFFFDAC73140D60200C0B64E6C40B2FEFFFFE2CE314094020080164D6C406BFEFFFF36D53140180300001F4C6C40B2FEFFFF52D73140EC020080CD4A6C401BFFFFFF4CDD31403C020080BF496C406BFEFFFF46E331401002000022496C406BFEFFFFE6E83140 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15694 - 1851 | Olympus Paterae | 0101000020C899010052B81E85EB596C4052B81E85EB513240 | 0103000020C89901000100000044000000A8FFFFFF98446C40DDFFFFFFF1733240A8FFFFFF4C456C406A0000006A8332400000000088466C4096FFFFFFF58D32407CFFFF7F7F476C4023000000CE97324084000080C8496C40230000003EA03240B0000000CE4B6C40DDFFFFFF91A632402C000080794D6C4096FFFFFF45A73240B00000009E4E6C4096FFFFFF75A43240D4FFFF7FC24F6C406A0000003AB332407CFFFF7F57516C406A0000004AC13240A8FFFFFFA8526C406A0000005ACF3240B0000000F2546C40230000007ED832408400008024576C40DDFFFFFFD1DE32407CFFFF7F7B5A6C4096FFFFFF25E5324000000000545C6C40230000005EE9324008010000E55E6C400AFFFFFF8DE63240DC00008063606C400AFFFFFF8DE632406001000088616C400AFFFFFFBDE3324084000080AC626C4096FFFFFFF5E732408C01008041646C4096FFFFFFC5EA324058000000FB666C400AFFFFFF5DE932405800000017696C4050FFFFFF39E0324060010000AC6A6C4096FFFFFF45D4324058000000E76B6C40DDFFFFFF81C5324060010000146C6C400AFFFFFF5DBC3240F20000C0356C6C4050FFFFFF36B6324084000020306C6C4096FFFFFF4AB132408C010080FD6B6C4096FFFFFFE5AC324034010080DE6C6C4096FFFFFFD59E3240B0000000D66D6C400AFFFFFF2D923240DC000080736E6C40DDFFFFFF317F324084000080A06E6C40DDFFFFFF21713240080100005D6E6C4050FFFFFFA96132408C010080196E6C4096FFFFFFE5523240B0000000D66D6C40DDFFFFFFF1463240580000004F6D6C4096FFFFFFF5333240340100802A6C6C400AFFFFFFDD1E3240B0000000066B6C4050FFFFFF490D324008010000256A6C400AFFFFFFEDFF31406001000090686C4096FFFFFF45F331408C01008011676C400AFFFFFF6DE931405800000093656C40DDFFFFFFE1DE3140B0000000FE636C40DDFFFFFF41D93140B00000002E616C4050FFFFFF39D231408C010080555F6C400AFFFFFF4DCD314084000080585C6C40DDFFFFFFD1D0314060010000345B6C400AFFFFFF7DCA3140DC0000800F5A6C400AFFFFFFDDC43140DC000080F3576C4096FFFFFFD5BD3140B0000000EE556C4050FFFFFFB9BB31408C01008015546C40DDFFFFFF21BD3140B00000006A526C400AFFFFFF6DBC3140340100800A506C4050FFFFFFE9B83140080100009D4C6C400AFFFFFF0DC23140340100806A4A6C4050FFFFFFC9C931408C01008089496C400AFFFFFFEDD2314084000080A8486C4050FFFFFFD9D7314060010000D0466C4050FFFFFFE9E53140840000808C466C400AFFFFFF7DF731405800000057476C40DDFFFFFF11093240840000808C466C4050FFFFFFB915324084000080D8456C4050FFFFFFC9233240340100807E456C4050FFFFFF092F3240B0000000C2456C4050FFFFFFA9343240B00000000E456C400AFFFFFF9D4032408400008070446C400AFFFFFF7D513240080100002D446C4096FFFFFFC5633240A8FFFFFF98446C40DDFFFFFFF1733240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15695 - 1870 | Dionysus Patera | 0101000020C8990100713D0AD7A3586C40F6285C8FC2F53140 | 0103000020C899010001000000140000002C00008045516C40DDFFFFFFE10B32400000000010526C40B0000000061532408400008034536C40B0000000761D3240840000809C546C40DDFFFFFF6122324000000000FC566C406A0000002A1E324058000000EB586C40B0000000D6173240A8FFFFFFAC5A6C40230000002E0B3240A8FFFFFF145C6C40230000001EFD31402C000080855C6C40DDFFFFFFC1EF314000000000E85B6C40DDFFFFFFE1DE314000000000805A6C40B000000056D43140DC000080F3576C406A0000009ACC3140B0000000EE556C40DDFFFFFF31CB31402C000080C9546C40B000000016C93140A8FFFFFFA4536C40DDFFFFFF61C83140000000002C546C40DDFFFFFF41D93140000000002C546C40DDFFFFFF21EA314084000080E8536C40B0000000E6F831405800000097526C40230000008E0532402C00008045516C40DDFFFFFFE10B3240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15692 - 1871 | Hera Patera | 0101000020C89901008FC2F5285C476C403333333333733240 | 0103000020C8990100010000001100000063000060B8466C40DDFFFFFF813E324037000020CC456C4000000000EC4C3240BB0000209F456C4096FFFFFFDF583240370000607D456C4096FFFFFF196A3240130100605E466C406A000000707D3240A50000E0AF476C40000000008E8C3240370000A0474A6C4096FFFFFF439A32404D000020204C6C40DDFFFFFFC79D32404D0000A0254E6C4000000000609C324013010060B24C6C4023000000FE943240370000E08D4B6C40000000009C8D3240630000603C4A6C400000000010833240A50000A00C496C40DDFFFFFF91793240BB000060A7486C40230000009E6D3240BB000060F3476C4096FFFFFF255E3240DFFFFFDFAF476C40000000002037324063000060B8466C40DDFFFFFF813E3240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15691 -(12 rows) - ---Testcase 70: -CREATE FOREIGN TABLE "♁ FDW"( - geom geometry NOT NULL, - osm_type varchar(16) OPTIONS (key 'true') NOT NULL , - osm_id bigint OPTIONS (key 'true') NOT NULL, - ver int NOT NULL, - arr text, - t text -) SERVER sqlite_svr OPTIONS (table '♁'); ---Testcase 71: ERR - No SRID -INSERT INTO "♁ FDW" SELECT * FROM "♁"; -ERROR: SpatiaLite doesn't accept GIS data without SRID -HINT: In column "geom" with data type "public.geometry" there is incorrect value in 42 bytes -CONTEXT: Hex data: 01010000009DA62AC82A763E4045F69C4F78D84D40 ---Testcase 72: OK -SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; - geom | osm_type | osm_id | ver | arr | t ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 0101000020E610000003756FEAA8753E4064B0E2546BD84D40 | node | 1621246531 | 4 | | {"drain":"disperse"} - 0101000020E6100000621C12ADCB753E408D3A843B61D84D40 | node | 1621246620 | 24 | | {"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"} - 0101000020E6100000223E0B9D32763E404EB10F5773D84D40 | node | 1632220259 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000915D0E6036763E4032EC8BDF6FD84D40 | node | 1632220283 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000F6B2EDB435763E40DE431DB171D84D40 | node | 1632220292 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000065C0FE9023763E4076919D126BD84D40 | node | 1632220315 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000009745178A2A763E40ED93ED8D6BD84D40 | node | 1632220319 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000C9BB348F0D763E40D9A6C2E96ED84D40 | node | 1632220350 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000009E3017A710763E406939D0436DD84D40 | node | 1632220355 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000003CA06CCA15763E40169DD1FB6BD84D40 | node | 1632220358 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000002F1114E40C763E40F03E7DBA70D84D40 | node | 1632220359 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000005BAE23B31F763E404159428875D84D40 | node | 1632220364 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000099A729B80E763E404E9DA27E72D84D40 | node | 1632220366 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000017540A7030763E40228D0A9C6CD84D40 | node | 1632220378 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000084CEB5792D763E40A14D0E9F74D84D40 | node | 1632220590 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000029290BBA18763E40CA56F20C75D84D40 | node | 1632220686 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000BDE2A9471A763E40DB0E57186CD84D40 | node | 1632497609 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"} - 0101000020E610000025F14D2E21763E401C469CA96BD84D40 | node | 1632497610 | 30 | | {"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"} - 0101000020E6100000EA79371614763E40B0FF3A376DD84D40 | node | 1632497611 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"} - 0101000020E61000002152787533763E400E10711871D84D40 | node | 1632497612 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"} - 0101000020E6100000A9F8BF232A763E401CD0D2156CD84D40 | node | 1632497613 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"} - 0101000020E6100000B1A206D330763E40AA5670896DD84D40 | node | 1632497614 | 29 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"} - 0101000020E61000003A0D07F824763E408F9A650575D84D40 | node | 4912277783 | 4 | | {"board_type":"history","information":"board","name":"Меркурий","tourism":"information"} - 0102000020E6100000040000003E038F1436763E40054C851D6BD84D40719417F439763E406FA01BF56BD84D4034B275BA3D763E40EC5FA3F66CD84D40D39DCCE440763E40E09744076ED84D40 | way | 152442438 | 8 | {1652605205,1652605201,1652605200,1652587958} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - 0101000020E6100000E91A1CDB21763E40D872785270D84D40 | node | 1632497615 | 34 | | {"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"} - 0101000020E6100000D243238E2B763E4083D83E8974D84D40 | node | 1632497616 | 26 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"} - 0101000020E61000005F341AAF2F763E40F409EAA573D84D40 | node | 1632497617 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"} - 0101000020E61000004232D3AC22763E402F922C1675D84D40 | node | 1632497618 | 30 | | {"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"} - 0101000020E6100000AC634B4519763E40B28AEDA474D84D40 | node | 1632497619 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"} - 0101000020E6100000D32934B511763E40AD2F12DA72D84D40 | node | 1632497620 | 31 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"} - 0101000020E6100000CEA046C60F763E40D95E0B7A6FD84D40 | node | 1632497621 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"} - 0101000020E6100000F747CE7811763E4011E6D1E869D84D40 | node | 1632503254 | 6 | | {"drain":"no"} - 0101000020E6100000003961C268763E40DF217B736ED84D40 | node | 1652587953 | 5 | | {"drain":"no"} - 0101000020E6100000D39DCCE440763E40E09744076ED84D40 | node | 1652587958 | 5 | | {"drain":"no"} - 0101000020E6100000DAB91FA633763E40384D9F1D70D84D40 | node | 3177639362 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} - 0101000020E610000039DB375211763E403DD68C0C72D84D40 | node | 3188928044 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} - 0101000020E61000003B246BC317763E405451611168D84D40 | node | 3218618266 | 4 | | {"amenity":"bench","backrest":"yes","material":"wood"} - 0101000020E610000049E70D411F763E403ABB6BBF6BD84D40 | node | 4912277772 | 4 | | {"board_type":"history","information":"board","name":"Флора","tourism":"information"} - 0101000020E61000001587D80528763E4034E48EED6BD84D40 | node | 4912277773 | 4 | | {"board_type":"history","information":"board","name":"Урания","tourism":"information"} - 0101000020E6100000ACAB02B518763E40F8B138526CD84D40 | node | 4912277774 | 4 | | {"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"} - 0101000020E6100000B23275B22F763E40153B75406DD84D40 | node | 4912277775 | 4 | | {"board_type":"history","information":"board","name":"Клио","tourism":"information"} - 0101000020E61000007335689E12763E40098DBB9C6DD84D40 | node | 4912277776 | 4 | | {"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"} - 0101000020E6100000C23A44920F763E40AF97A60870D84D40 | node | 4912277777 | 4 | | {"board_type":"history","information":"board","name":"Талия","tourism":"information"} - 0101000020E610000074ACF7C033763E404914B58F70D84D40 | node | 4912277778 | 4 | | {"board_type":"history","information":"board","name":"Калиопа","tourism":"information"} - 0101000020E6100000CDF0FA2713763E40D105F52D73D84D40 | node | 4912277779 | 4 | | {"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"} - 0101000020E6100000B7A7F5C830763E40E342D43373D84D40 | node | 4912277780 | 4 | | {"board_type":"history","information":"board","name":"Полигимния","tourism":"information"} - 0101000020E610000096253ACB2C763E402474E15174D84D40 | node | 4912277781 | 4 | | {"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"} - 0101000020E610000045DA21591B763E4065BF93BB74D84D40 | node | 4912277782 | 4 | | {"board_type":"history","information":"board","name":"Эрато","tourism":"information"} - 0101000020E610000078E0AD3DFD753E40454EBA884AD84D40 | node | 5251698420 | 25 | | {"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"} - 0101000020E610000042AF3F89CF753E407F805AB164D84D40 | node | 6758903438 | 6 | | {"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"} - 0101000020E6100000E1FFD8356B763E40A4C74A276DD84D40 | node | 8331430683 | 3 | | {"inlet":"grate","manhole":"drain","man_made":"manhole"} - 0101000020E6100000CA71022E23763E40F086342A70D84D40 | node | 8530936200 | 1 | | {"board_type":"history","information":"board","name":"Аполлон","tourism":"information"} - 0101000020E61000006372B4F4B2753E40D50FA0956AD84D40 | node | 9140565043 | 1 | | {"ford":"yes"} - 0101000020E6100000A91F8AB8EF753E40786FFBD467D84D40 | node | 9140576937 | 3 | | {"drain":"no"} - 0101000020E610000003D0285DFA753E40773BB13D69D84D40 | node | 9140576938 | 4 | | {"drain":"no"} - 0101000020E6100000E50D30F31D763E40BD885BAA77D84D40 | node | 9143069530 | 5 | | {"drain":"no","source:direction":"survey"} - 01010000009DA62AC82A763E4045F69C4F78D84D40 | node | 9143069534 | 1 | | {"amenity":"bench","backrest":"yes","material":"wood"} - 0101000020E6100000C712D6C6D8753E4043345FCA65D84D40 | node | 9143093777 | 1 | | {"manhole":"telecom","man_made":"manhole"} - 0101000020E6100000D4C3865DCA753E40F57C72B966D84D40 | node | 9143093778 | 1 | | {"manhole":"telecom","man_made":"manhole"} - 0101000020E61000002C80290307763E406939D0436DD84D40 | node | 9143093802 | 4 | | {"drain":"no"} - 0101000020E61000004A2943B005763E40CCBE863B72D84D40 | node | 9143093804 | 3 | | {"drain":"no"} - 0101000020E6100000CD80690712763E40D55A988576D84D40 | node | 9143093806 | 4 | | {"drain":"no"} - 0101000020E6100000529B38B9DF753E40A1F1E95674D84D40 | node | 9656736571 | 2 | | {"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"} - 0102000020E6100000040000004CD0155BF7753E4060048D9944D84D4078E0AD3DFD753E40454EBA884AD84D40B8C3CB7800763E40AF8273A14DD84D40E91A1CDB21763E40D872785270D84D40 | way | 30995960 | 42 | {9140727117,5251698420,1518870630,1632497615} | {"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} - 0102000020E6100000030000001ECB715DE7753E40840948A066D84D406372B4F4B2753E40D50FA0956AD84D4003756FEAA8753E4064B0E2546BD84D40 | way | 149099000 | 6 | {1621246509,9140565043,1621246531} | {"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"} - 0102000020E610000007000000B02770A1E1753E40716193EB5CD84D40691F86B1E0753E4093E34EE960D84D403AF70D02E1753E403908DFA062D84D40B08394E9E1753E40387870C163D84D40F1868FE3E2753E404A9BAA7B64D84D401A42846EE5753E40BA50549165D84D401ECB715DE7753E40840948A066D84D40 | way | 149099004 | 8 | {1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000140000008DCF0946CA753E4073A48EE964D84D40F3B4577AC8753E40DE8893A064D84D40534DFF48C7753E4067B4554964D84D4035C4C25AC6753E40F1B105CE63D84D4071F618F6C5753E40C175204663D84D40ACE0B721C6753E40FD7964BD62D84D40BE03F2DBC6753E40743A353C62D84D4058665B17C8753E408CF2CCCB61D84D40341477BCC9753E40815EB87361D84D40621C12ADCB753E408D3A843B61D84D400EA2B5A2CD753E4004858B2661D84D400D26B49BCF753E40933F733161D84D409B36887BD1753E40A5AA645B61D84D4094FD4EEED2753E40D48A259B61D84D402E60B829D4753E40E01E3AF361D84D407568A219D5753E40216AEC5C62D84D40F29DF3AED5753E40D328C9DF62D84D40C81E46ADD5753E40C7A8216063D84D40EC3CE070D5753E4044B060D163D84D4099863CDDD4753E404A3F863364D84D40 | way | 149099028 | 5 | {9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949} | {"barrier":"fence","colour":"green","fence_type":"wood","height":"2"} - 0102000020E610000017000000339875B5CB753E407073CF5F8DD84D4097321587D8753E40AC51B41776D84D40919DB7B1D9753E40893952C774D84D40547FCEEEDA753E404E976A0B74D84D40A7A503A3DC753E40B3EC496073D84D406FF02A10E2753E40A8E8A3E771D84D40304AD05FE8753E4055F0805770D84D40B735D88AEC753E40F116A3096FD84D40F1475167EE753E40929ED8F96DD84D4074266DAAEE753E40E027B3E66CD84D40AAF7AF07EE753E4076D954826AD84D405DA21FB2ED753E40B8B475CB69D84D408D6E7319ED753E40FA6184F068D84D40BD827EF0EB753E4066321CCF67D84D40473EAF78EA753E405AB8ACC266D84D40830074F3E8753E4043345FCA65D84D40EFEAB01DE7753E40FCFD62B664D84D40C69F4DB3E5753E408010C99063D84D40AF1B00BBE4753E407468476062D84D4038EB9D1BE4753E40B186302361D84D4050FF59F3E3753E4040EB2B595FD84D40626A4B1DE4753E4000A6B1625DD84D407A7E07F5E3753E40487254C95BD84D40 | way | 149099029 | 36 | {9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684} | {"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"} - 0102000020E61000000200000018C110830A763E40F99DCB796BD84D4003D0285DFA753E40773BB13D69D84D40 | way | 149099034 | 9 | {1632503255,9140576938} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000200000053CDACA580763E40BA707BDD7DD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294524 | 8 | {1239612692,1632497615} | {"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E61000002500000029290BBA18763E40CA56F20C75D84D40A4F6C7201C763E402FEE505E75D84D405BAE23B31F763E404159428875D84D4089DE985423763E40D618198975D84D403F96F4E626763E4082ECAB6175D84D4038E1B9522A763E40DC93D11275D84D4084CEB5792D763E40A14D0E9F74D84D40DB696B4430763E402418BD0974D84D40223E0B9D32763E404EB10F5773D84D40B653CE7234763E403156E58C72D84D40F6B2EDB435763E40DE431DB171D84D4014E0055B36763E40FC766DCA70D84D40915D0E6036763E4032EC8BDF6FD84D406D2B07C435763E40501FDCF86ED84D4027C7F88B34763E40684D3D1C6ED84D408DAC46C032763E40217365506DD84D4017540A7030763E40228D0A9C6CD84D403C365DAA2D763E40E71835046CD84D409745178A2A763E40ED93ED8D6BD84D401C785A2327763E4088FC8E3C6BD84D4065C0FE9023763E4076919D126BD84D40379089EF1F763E404C12F0106BD84D4080D82D5D1C763E409F3E5D386BD84D40888D68F118763E40469737876BD84D403CA06CCA15763E40169DD1FB6BD84D40E404B7FF12763E4093D222916CD84D409E3017A710763E406939D0436DD84D400A1B54D10E763E408694FA0D6ED84D40C9BB348F0D763E40D9A6C2E96ED84D40AC8E1CE90C763E40BB7372D06FD84D402F1114E40C763E40F03E7DBA70D84D4052431B800D763E4067CB03A271D84D4099A729B80E763E404E9DA27E72D84D4033C2DB8310763E4095777A4A73D84D40A91A18D412763E40955DD5FE73D84D405AB9179815763E403B12D49574D84D4029290BBA18763E40CA56F20C75D84D40 | way | 150294525 | 6 | {1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686} | {"name":"Дубовое кольцо"} - 0102000020E610000006000000E91A1CDB21763E40D872785270D84D40BA6A9E23F2753E40D7AEBFDB72D84D406A1492CCEA753E40E947C32973D84D4014854CE8E4753E40E370E65773D84D4040A0D8AFE0753E408368AD6873D84D40A7A503A3DC753E40B3EC496073D84D40 | way | 150294532 | 30 | {1632497615,1632220252,9140727238,9140727242,9140727239,1621246592} | {"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E6100000020000007A7E07F5E3753E40487254C95BD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294541 | 8 | {1239612684,1632497615} | {"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D405CF45F3134763E403ED6427F57D84D40 | way | 150294547 | 9 | {1632497615,1518870645} | {"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000006000000E2AB1DC539763E4007616EF772D84D40F33EE99F3B763E40F53D343D72D84D400442469B3E763E406198028871D84D40C05AB56B42763E405B7FA6B970D84D4076960FF747763E40263ED23B70D84D40003961C268763E40DF217B736ED84D40 | way | 152440395 | 6 | {1652587944,1652587948,1652587950,9143093800,1652587952,1652587953} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - 0102000020E61000000300000053F06F2B18763E400CCD751A69D84D40015AA95615763E400C299A6269D84D40F747CE7811763E4011E6D1E869D84D40 | way | 152442436 | 10 | {1652605207,9143204222,1632503254} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000400000039DB375211763E403DD68C0C72D84D40DAB91FA633763E40384D9F1D70D84D40E1FFD8356B763E40A4C74A276DD84D408B96F2107C763E40FEE4396C6CD84D40 | way | 311975108 | 20 | {3188928044,3177639362,8331430683,7911801321} | {"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"} - 0102000020E610000006000000C3DE1F4A0F763E40769A160676D84D408EBD288B0C763E4094298B6775D84D40D25C024B09763E405326906D74D84D4097A6ADB607763E4089C9C0A673D84D400E0B5AED06763E408F44793073D84D404A2943B005763E40CCBE863B72D84D40 | way | 313051687 | 8 | {1632503180,9143069533,9143093805,9143069532,1632503185,9143093804} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000E00000052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D40 | way | 426269715 | 5 | {4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051} | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} - 0102000020E61000000E000000A7A503A3DC753E40B3EC496073D84D40C19D55B0D7753E4090E854E872D84D40B25EB12BD2753E4054466D2C72D84D400AF1ED02CA753E40731D99FD70D84D40A252DB3CC4753E40B59C95FE6FD84D403A443756BD753E403E86D8AA6ED84D4091D6732DB5753E4069DDABFB6CD84D40529731AAB1753E40FEE4396C6CD84D40181527ADAE753E4016CBE31F6CD84D40671A03A1AB753E4028DAB0016CD84D409D1F9095A9753E401098E2056CD84D40211E8997A7753E40BDC799266CD84D4064D1CF2FA5753E40BD23BE6E6CD84D4083AE3374A2753E40F26492EC6CD84D40 | way | 438780267 | 20 | {1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957} | {"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"} - 0102000020E61000000200000077C5E7A969763E409FAEEE586CD84D40E91A1CDB21763E40D872785270D84D40 | way | 750779153 | 4 | {1632220250,1632497615} | {"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D40C0B56EDE93763E40407331618FD84D40 | way | 750779155 | 5 | {1632497615,1195120146} | {"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408D6E7319ED753E40FA6184F068D84D40 | way | 750779156 | 5 | {1632497615,1621246419} | {"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D402E69D6636C763E407143424AA2D84D40 | way | 750779157 | 4 | {1632497615,1652587960} | {"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} - 0102000020E6100000030000005F251FBB0B763E409FA97C748FD84D40BC9179E40F763E403DB4345C89D84D40E91A1CDB21763E40D872785270D84D40 | way | 750779158 | 4 | {9159459639,1239612686,1632497615} | {"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E6100000150000009D1F9095A9753E401098E2056CD84D40BFE90203AD753E40580229B16BD84D40649291B3B0753E40463B133F6BD84D40691B7FA2B2753E4058EEBBD86AD84D406372B4F4B2753E40D50FA0956AD84D40D4410356B3753E40053818456AD84D40387705ECB4753E40D6FB32BD69D84D4078B6476FB8753E4083458F2969D84D408751103CBE753E405309AAA168D84D402BC65455C3753E40B387AC2468D84D40FA21DB9EC5753E40C53A55BE67D84D40D06EE305C7753E407284B12A67D84D40F949B54FC7753E40EF1B5F7B66D84D40948444DAC6753E40A23C98B965D84D40FBB1497EC4753E40970AE01C64D84D40B4F116FEC2753E407A81A32E63D84D40028F5EC3C2753E406EBF7CB262D84D40074C9649C3753E40C233A14962D84D4095B88E71C5753E40CE8536A561D84D40641415BBC7753E40F84C9B1661D84D40F89969B1CA753E40468EBE9360D84D40 | way | 988944864 | 2 | {9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340} | {"highway":"path","surface":"ground"} - 0102000020E61000000200000005B4BE92F5753E4030BDFDB968D84D40A91F8AB8EF753E40786FFBD467D84D40 | way | 988944880 | 3 | {9140576936,9140576937} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000090000002DDB3D2FCB753E40BB3CE7B864D84D401523A69FCB753E40CC79C6BE64D84D405C7347FFCB753E402C82FFAD64D84D407AE81615CC753E4067107A9164D84D404A0856D5CB753E40201CFD7964D84D4062C0ED64CB753E400EDF1D7464D84D401B704C05CB753E40AFD6E48464D84D40FDFA7CEFCA753E40DE8893A064D84D402DDB3D2FCB753E40BB3CE7B864D84D40 | way | 989184163 | 1 | {9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - 0102000020E6100000090000006D4ECA49CD753E40BB0ED59464D84D40559632BACD753E40388CDD9964D84D409DE6D319CE753E402C54ED8964D84D40BA5BA32FCE753E4067E2676D64D84D408B7BE2EFCD753E408B2E145564D84D4079B4CC7DCD753E400EB10B5064D84D405CE3D81FCD753E401AE9FB5F64D84D403E6E090ACD753E40DE5A817C64D84D406D4ECA49CD753E40BB0ED59464D84D40 | way | 989184166 | 1 | {9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - 0102000020E610000003000000DB04CE0825763E407B99CD8877D84D40244D727621763E40BD885BAA77D84D40E50D30F31D763E40BD885BAA77D84D40 | way | 989211851 | 4 | {1652605211,9143069529,9143069530} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E610000002000000547FCEEEDA753E404E976A0B74D84D409F34796FB1753E40ED6E545D76D84D40 | way | 989211857 | 12 | {8650331583,4260007752} | {"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"} - 0102000020E610000006000000E4E3C924D9753E40AB31D75878D84D407EB6C480DB753E40B819130775D84D40B3AFE18EDC753E40DC7F643A74D84D4053CF8250DE753E4036278AEB73D84D4028E84020E1753E40EE320DD473D84D4067F3380CE6753E40AD437FB273D84D40 | way | 989211858 | 1 | {9143069609,9143069608,9143069607,9143069606,9143069605,9143069604} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000005000000F83CDA931B763E409540EF3268D84D40EACA67791E763E4028F4554D6BD84D406D75392520763E4088FC8E3C6BD84D400C95DAE621763E4088FC8E3C6BD84D400C61904F23763E4017B776476BD84D40 | way | 989211859 | 1 | {9143093728,9143093727,9143093726,9143093725,9143093724} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000006000000DC2F9FAC18763E40C5F29D4E68D84D405DA626C11B763E4010E099756BD84D401129BCBA19763E40F3C6EEA76BD84D4071091BF917763E408DE7D8E66BD84D40D7A6B1BD16763E40048E041A6CD84D40DB79D10D03763E405B1A097E65D84D40 | way | 989211860 | 1 | {9143093729,9143093730,9143093731,9143093732,9143093734,9143093733} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E6100000120000004C9A50D20D763E40D8CE9C9A70D84D402F2581BC0D763E40619E3AFB6FD84D406A0F20E80D763E402025766D6FD84D40994B05700E763E40DFABB1DF6ED84D4081936DE00E763E40F15E5A796ED84D40CE44227E0F763E40278CC11E6ED84D40E50929E4EF753E40FA75F1C869D84D407AE3A430EF753E40FA75F1C869D84D40F70489EDEE753E405FDF3DF669D84D40FDC1C073EF753E40DB70B3D36AD84D40A91F8AB8EF753E407016E5886BD84D40E50929E4EF753E40D4939E8E6CD84D404A737511F0753E4081D7C2876DD84D40DF4CF15DEF753E4039F7B2486ED84D40A4969CC9ED753E40C7C5072C6FD84D40D53A1680EB753E40321A9E0370D84D4066BFEE74E7753E4049CCFD1F71D84D405858703FE0753E40D1A9D0E572D84D40 | way | 989211861 | 1 | {9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E61000001100000061360186E5753E40839E72F15CD84D4061360186E5753E40E12AAAD95ED84D40FCCCB458E5753E408D823BAB60D84D407FABD09BE5753E40F2FFF4B061D84D40CC5C8539E6753E405078BFC062D84D409CEC551AE7753E40BBCC559863D84D40002258B0E8753E40146E43D664D84D400B687D25EB753E40A827E26366D84D400A34338EEC753E40E92ADD5D67D84D40A4969CC9ED753E40B9E8BF6268D84D402D32F092EE753E40063E50B868D84D409167F228F0753E401EDC42FC68D84D40AA9619DB10763E409214A28D6DD84D4086E8103812763E40D44BE71E6DD84D405B35199F13763E405744A8AD6CD84D40902E36AD14763E40CE609D746CD84D400C1E4BC400763E402B20A3F265D84D40 | way | 989211862 | 1 | {9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000013000000AA9212CCE2753E40716193EB5CD84D40AA9212CCE2753E40A69C2FF65ED84D404529C69EE2753E407B455CA560D84D400FFC5EF9E2753E40452C62D861D84D407A22E3ACE3753E40F16F86D162D84D400EC81462E4753E40A98F769263D84D40497E69F6E5753E40023164D064D84D407D433C6DE8753E4096EA025E66D84D40539044D4E9753E40D7EDFD5767D84D40F3AFE595EB753E405309AAA168D84D408755174BEC753E40B28174B169D84D408D124FD1EC753E40293C0DBD6AD84D4057E5E72BED753E40D57F31B66BD84D40DAC3036FED753E40C8B7D2C66CD84D4057E5E72BED753E4009BBCDC06DD84D40DBF74D06EC753E40740F64986ED84D403BD8AC44EA753E40C7C5072C6FD84D40962F1E94E6753E40DE77674870D84D40E8A8FE9CDD753E40E35C797F72D84D40 | way | 989211863 | 1 | {9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000002000000189A46EE44763E40A3795B446FD84D4076960FF747763E40263ED23B70D84D40 | way | 989211867 | 2 | {1652587955,1652587952} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - 0102000020E6100000020000004F7EE60709763E40E64647286CD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211868 | 4 | {9143093801,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000200000070140FDE0D763E40F3846FAB6AD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211869 | 4 | {1632503177,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000040000004510E7E104763E40C677184971D84D40DA45877604763E407FE5F7EC6FD84D40456C0B2A05763E40A465EE6B6ED84D402C80290307763E406939D0436DD84D40 | way | 989211870 | 4 | {1632503179,9143093803,1632503181,9143093802} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000040000004C27C8BE1A763E40289B728577D84D405951836918763E40A5EA686677D84D4096A3B6C315763E406AD2B71677D84D40CD80690712763E40D55A988576D84D40 | way | 989211871 | 4 | {1652605209,9143069531,1632503237,9143093806} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408682082758763E40ACE9D55B5ED84D40 | way | 991343632 | 2 | {1632497615,1518870652} | {"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000005000000EE2E06C545763E40804754A86ED84D40DF420D9535763E403895568D6FD84D406D2B07C435763E409D2CB5DE6FD84D40B51F84DB35763E40793C2D3F70D84D40D39453F135763E40678984A570D84D40 | way | 991343633 | 1 | {9159456550,9159456549,9159456545,9159456544,9159456543} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000005000000E871CE3E45763E40DA6443ED6DD84D40D985D50E35763E4092B245D26ED84D40FD474B8A34763E40F15E5A796ED84D40B09696EC33763E40278CC11E6ED84D40E006C60B33763E404B7C49BE6DD84D40 | way | 991343634 | 1 | {9159456552,9159456551,9159456548,9159456547,9159456546} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000002000000C305EADED4753E4022AAF06778D84D40CE93C6C3D6753E40FF97C68A75D84D40 | way | 991343661 | 1 | {9159459675,9159459674} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000002000000339875B5CB753E407073CF5F8DD84D40E91A1CDB21763E40D872785270D84D40 | way | 1042527594 | 11 | {9140727237,1632497615} | {"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"} - 0106000020E610000001000000010300000001000000250000002F1114E40C763E40F03E7DBA70D84D40AC8E1CE90C763E40BB7372D06FD84D40C9BB348F0D763E40D9A6C2E96ED84D400A1B54D10E763E408694FA0D6ED84D409E3017A710763E406939D0436DD84D40E404B7FF12763E4093D222916CD84D403CA06CCA15763E40169DD1FB6BD84D40888D68F118763E40469737876BD84D4080D82D5D1C763E409F3E5D386BD84D40379089EF1F763E404C12F0106BD84D4065C0FE9023763E4076919D126BD84D401C785A2327763E4088FC8E3C6BD84D409745178A2A763E40ED93ED8D6BD84D403C365DAA2D763E40E71835046CD84D4017540A7030763E40228D0A9C6CD84D408DAC46C032763E40217365506DD84D4027C7F88B34763E40684D3D1C6ED84D406D2B07C435763E40501FDCF86ED84D40915D0E6036763E4032EC8BDF6FD84D4014E0055B36763E40FC766DCA70D84D40F6B2EDB435763E40DE431DB171D84D40B653CE7234763E403156E58C72D84D40223E0B9D32763E404EB10F5773D84D40DB696B4430763E402418BD0974D84D4084CEB5792D763E40A14D0E9F74D84D4038E1B9522A763E40DC93D11275D84D403F96F4E626763E4082ECAB6175D84D4089DE985423763E40D618198975D84D405BAE23B31F763E404159428875D84D40A4F6C7201C763E402FEE505E75D84D4029290BBA18763E40CA56F20C75D84D405AB9179815763E403B12D49574D84D40A91A18D412763E40955DD5FE73D84D4033C2DB8310763E4095777A4A73D84D4099A729B80E763E404E9DA27E72D84D4052431B800D763E4067CB03A271D84D402F1114E40C763E40F03E7DBA70D84D40 | way | 150294525 | 6 | | {"name":"Дубовое кольцо"} - 0106000020E6100000010000000103000000010000000E00000017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D40 | way | 426269715 | 5 | | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} - 0106000020E61000000100000001030000000100000009000000FDFA7CEFCA753E40DE8893A064D84D401B704C05CB753E40AFD6E48464D84D4062C0ED64CB753E400EDF1D7464D84D404A0856D5CB753E40201CFD7964D84D407AE81615CC753E4067107A9164D84D405C7347FFCB753E402C82FFAD64D84D401523A69FCB753E40CC79C6BE64D84D402DDB3D2FCB753E40BB3CE7B864D84D40FDFA7CEFCA753E40DE8893A064D84D40 | way | 989184163 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - 0106000020E610000001000000010300000001000000090000003E6E090ACD753E40DE5A817C64D84D405CE3D81FCD753E401AE9FB5F64D84D4079B4CC7DCD753E400EB10B5064D84D408B7BE2EFCD753E408B2E145564D84D40BA5BA32FCE753E4067E2676D64D84D409DE6D319CE753E402C54ED8964D84D40559632BACD753E40388CDD9964D84D406D4ECA49CD753E40BB0ED59464D84D403E6E090ACD753E40DE5A817C64D84D40 | way | 989184166 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} -(111 rows) - ---Testcase 73: -UPDATE "♁" SET geom = ST_SetSRID(geom, 4326); ---Testcase 74: -INSERT INTO "♁ FDW" SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; ---Testcase 75: -ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE bytea; ---Testcase 76: -SELECT * FROM "♁ FDW"; - geom | osm_type | osm_id | ver | arr | t ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - \x0001e6100000f747ce7811763e4011e6d1e869d84d40f747ce7811763e4011e6d1e869d84d407c01000000f747ce7811763e4011e6d1e869d84d40fe | node | 1632503254 | 6 | | {"drain":"no"} - \x0001e610000003756feaa8753e4064b0e2546bd84d4003756feaa8753e4064b0e2546bd84d407c0100000003756feaa8753e4064b0e2546bd84d40fe | node | 1621246531 | 4 | | {"drain":"disperse"} - \x0001e6100000621c12adcb753e408d3a843b61d84d40621c12adcb753e408d3a843b61d84d407c01000000621c12adcb753e408d3a843b61d84d40fe | node | 1621246620 | 24 | | {"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"} - \x0001e6100000223e0b9d32763e404eb10f5773d84d40223e0b9d32763e404eb10f5773d84d407c01000000223e0b9d32763e404eb10f5773d84d40fe | node | 1632220259 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e6100000915d0e6036763e4032ec8bdf6fd84d40915d0e6036763e4032ec8bdf6fd84d407c01000000915d0e6036763e4032ec8bdf6fd84d40fe | node | 1632220283 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e6100000f6b2edb435763e40de431db171d84d40f6b2edb435763e40de431db171d84d407c01000000f6b2edb435763e40de431db171d84d40fe | node | 1632220292 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e610000065c0fe9023763e4076919d126bd84d4065c0fe9023763e4076919d126bd84d407c0100000065c0fe9023763e4076919d126bd84d40fe | node | 1632220315 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e61000009745178a2a763e40ed93ed8d6bd84d409745178a2a763e40ed93ed8d6bd84d407c010000009745178a2a763e40ed93ed8d6bd84d40fe | node | 1632220319 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e6100000c9bb348f0d763e40d9a6c2e96ed84d40c9bb348f0d763e40d9a6c2e96ed84d407c01000000c9bb348f0d763e40d9a6c2e96ed84d40fe | node | 1632220350 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e61000009e3017a710763e406939d0436dd84d409e3017a710763e406939d0436dd84d407c010000009e3017a710763e406939d0436dd84d40fe | node | 1632220355 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e61000003ca06cca15763e40169dd1fb6bd84d403ca06cca15763e40169dd1fb6bd84d407c010000003ca06cca15763e40169dd1fb6bd84d40fe | node | 1632220358 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e61000002f1114e40c763e40f03e7dba70d84d402f1114e40c763e40f03e7dba70d84d407c010000002f1114e40c763e40f03e7dba70d84d40fe | node | 1632220359 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e61000005bae23b31f763e404159428875d84d405bae23b31f763e404159428875d84d407c010000005bae23b31f763e404159428875d84d40fe | node | 1632220364 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e610000099a729b80e763e404e9da27e72d84d4099a729b80e763e404e9da27e72d84d407c0100000099a729b80e763e404e9da27e72d84d40fe | node | 1632220366 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e610000017540a7030763e40228d0a9c6cd84d4017540a7030763e40228d0a9c6cd84d407c0100000017540a7030763e40228d0a9c6cd84d40fe | node | 1632220378 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e610000084ceb5792d763e40a14d0e9f74d84d4084ceb5792d763e40a14d0e9f74d84d407c0100000084ceb5792d763e40a14d0e9f74d84d40fe | node | 1632220590 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e610000029290bba18763e40ca56f20c75d84d4029290bba18763e40ca56f20c75d84d407c0100000029290bba18763e40ca56f20c75d84d40fe | node | 1632220686 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - \x0001e610000003756feaa8753e40840948a066d84d401ecb715de7753e4064b0e2546bd84d407c02000000030000001ecb715de7753e40840948a066d84d406372b4f4b2753e40d50fa0956ad84d4003756feaa8753e4064b0e2546bd84d40fe | way | 149099000 | 6 | {1621246509,9140565043,1621246531} | {"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"} - \x0001e6100000189a46ee44763e40a3795b446fd84d4076960ff747763e40263ed23b70d84d407c0200000002000000189a46ee44763e40a3795b446fd84d4076960ff747763e40263ed23b70d84d40fe | way | 989211867 | 2 | {1652587955,1652587952} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - \x0001e6100000bde2a9471a763e40db0e57186cd84d40bde2a9471a763e40db0e57186cd84d407c01000000bde2a9471a763e40db0e57186cd84d40fe | node | 1632497609 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"} - \x0001e610000025f14d2e21763e401c469ca96bd84d4025f14d2e21763e401c469ca96bd84d407c0100000025f14d2e21763e401c469ca96bd84d40fe | node | 1632497610 | 30 | | {"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"} - \x0001e6100000ea79371614763e40b0ff3a376dd84d40ea79371614763e40b0ff3a376dd84d407c01000000ea79371614763e40b0ff3a376dd84d40fe | node | 1632497611 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"} - \x0001e61000002152787533763e400e10711871d84d402152787533763e400e10711871d84d407c010000002152787533763e400e10711871d84d40fe | node | 1632497612 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"} - \x0001e6100000a9f8bf232a763e401cd0d2156cd84d40a9f8bf232a763e401cd0d2156cd84d407c01000000a9f8bf232a763e401cd0d2156cd84d40fe | node | 1632497613 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"} - \x0001e6100000b1a206d330763e40aa5670896dd84d40b1a206d330763e40aa5670896dd84d407c01000000b1a206d330763e40aa5670896dd84d40fe | node | 1632497614 | 29 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"} - \x0001e61000003a0d07f824763e408f9a650575d84d403a0d07f824763e408f9a650575d84d407c010000003a0d07f824763e408f9a650575d84d40fe | node | 4912277783 | 4 | | {"board_type":"history","information":"board","name":"Меркурий","tourism":"information"} - \x0001e61000003e038f1436763e40054c851d6bd84d40d39dcce440763e40e09744076ed84d407c02000000040000003e038f1436763e40054c851d6bd84d40719417f439763e406fa01bf56bd84d4034b275ba3d763e40ec5fa3f66cd84d40d39dcce440763e40e09744076ed84d40fe | way | 152442438 | 8 | {1652605205,1652605201,1652605200,1652587958} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - \x0001e6100000e91a1cdb21763e40d872785270d84d40e91a1cdb21763e40d872785270d84d407c01000000e91a1cdb21763e40d872785270d84d40fe | node | 1632497615 | 34 | | {"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"} - \x0001e6100000d243238e2b763e4083d83e8974d84d40d243238e2b763e4083d83e8974d84d407c01000000d243238e2b763e4083d83e8974d84d40fe | node | 1632497616 | 26 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"} - \x0001e61000005f341aaf2f763e40f409eaa573d84d405f341aaf2f763e40f409eaa573d84d407c010000005f341aaf2f763e40f409eaa573d84d40fe | node | 1632497617 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"} - \x0001e61000004232d3ac22763e402f922c1675d84d404232d3ac22763e402f922c1675d84d407c010000004232d3ac22763e402f922c1675d84d40fe | node | 1632497618 | 30 | | {"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"} - \x0001e6100000ac634b4519763e40b28aeda474d84d40ac634b4519763e40b28aeda474d84d407c01000000ac634b4519763e40b28aeda474d84d40fe | node | 1632497619 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"} - \x0001e6100000d32934b511763e40ad2f12da72d84d40d32934b511763e40ad2f12da72d84d407c01000000d32934b511763e40ad2f12da72d84d40fe | node | 1632497620 | 31 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"} - \x0001e6100000cea046c60f763e40d95e0b7a6fd84d40cea046c60f763e40d95e0b7a6fd84d407c01000000cea046c60f763e40d95e0b7a6fd84d40fe | node | 1632497621 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"} - \x0001e6100000003961c268763e40df217b736ed84d40003961c268763e40df217b736ed84d407c01000000003961c268763e40df217b736ed84d40fe | node | 1652587953 | 5 | | {"drain":"no"} - \x0001e6100000d39dcce440763e40e09744076ed84d40d39dcce440763e40e09744076ed84d407c01000000d39dcce440763e40e09744076ed84d40fe | node | 1652587958 | 5 | | {"drain":"no"} - \x0001e6100000dab91fa633763e40384d9f1d70d84d40dab91fa633763e40384d9f1d70d84d407c01000000dab91fa633763e40384d9f1d70d84d40fe | node | 3177639362 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} - \x0001e610000039db375211763e403dd68c0c72d84d4039db375211763e403dd68c0c72d84d407c0100000039db375211763e403dd68c0c72d84d40fe | node | 3188928044 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} - \x0001e61000003b246bc317763e405451611168d84d403b246bc317763e405451611168d84d407c010000003b246bc317763e405451611168d84d40fe | node | 3218618266 | 4 | | {"amenity":"bench","backrest":"yes","material":"wood"} - \x0001e610000049e70d411f763e403abb6bbf6bd84d4049e70d411f763e403abb6bbf6bd84d407c0100000049e70d411f763e403abb6bbf6bd84d40fe | node | 4912277772 | 4 | | {"board_type":"history","information":"board","name":"Флора","tourism":"information"} - \x0001e61000001587d80528763e4034e48eed6bd84d401587d80528763e4034e48eed6bd84d407c010000001587d80528763e4034e48eed6bd84d40fe | node | 4912277773 | 4 | | {"board_type":"history","information":"board","name":"Урания","tourism":"information"} - \x0001e6100000acab02b518763e40f8b138526cd84d40acab02b518763e40f8b138526cd84d407c01000000acab02b518763e40f8b138526cd84d40fe | node | 4912277774 | 4 | | {"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"} - \x0001e6100000b23275b22f763e40153b75406dd84d40b23275b22f763e40153b75406dd84d407c01000000b23275b22f763e40153b75406dd84d40fe | node | 4912277775 | 4 | | {"board_type":"history","information":"board","name":"Клио","tourism":"information"} - \x0001e61000007335689e12763e40098dbb9c6dd84d407335689e12763e40098dbb9c6dd84d407c010000007335689e12763e40098dbb9c6dd84d40fe | node | 4912277776 | 4 | | {"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"} - \x0001e6100000c23a44920f763e40af97a60870d84d40c23a44920f763e40af97a60870d84d407c01000000c23a44920f763e40af97a60870d84d40fe | node | 4912277777 | 4 | | {"board_type":"history","information":"board","name":"Талия","tourism":"information"} - \x0001e610000074acf7c033763e404914b58f70d84d4074acf7c033763e404914b58f70d84d407c0100000074acf7c033763e404914b58f70d84d40fe | node | 4912277778 | 4 | | {"board_type":"history","information":"board","name":"Калиопа","tourism":"information"} - \x0001e6100000cdf0fa2713763e40d105f52d73d84d40cdf0fa2713763e40d105f52d73d84d407c01000000cdf0fa2713763e40d105f52d73d84d40fe | node | 4912277779 | 4 | | {"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"} - \x0001e6100000b7a7f5c830763e40e342d43373d84d40b7a7f5c830763e40e342d43373d84d407c01000000b7a7f5c830763e40e342d43373d84d40fe | node | 4912277780 | 4 | | {"board_type":"history","information":"board","name":"Полигимния","tourism":"information"} - \x0001e610000096253acb2c763e402474e15174d84d4096253acb2c763e402474e15174d84d407c0100000096253acb2c763e402474e15174d84d40fe | node | 4912277781 | 4 | | {"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"} - \x0001e610000045da21591b763e4065bf93bb74d84d4045da21591b763e4065bf93bb74d84d407c0100000045da21591b763e4065bf93bb74d84d40fe | node | 4912277782 | 4 | | {"board_type":"history","information":"board","name":"Эрато","tourism":"information"} - \x0001e610000078e0ad3dfd753e40454eba884ad84d4078e0ad3dfd753e40454eba884ad84d407c0100000078e0ad3dfd753e40454eba884ad84d40fe | node | 5251698420 | 25 | | {"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"} - \x0001e610000042af3f89cf753e407f805ab164d84d4042af3f89cf753e407f805ab164d84d407c0100000042af3f89cf753e407f805ab164d84d40fe | node | 6758903438 | 6 | | {"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"} - \x0001e6100000e1ffd8356b763e40a4c74a276dd84d40e1ffd8356b763e40a4c74a276dd84d407c01000000e1ffd8356b763e40a4c74a276dd84d40fe | node | 8331430683 | 3 | | {"inlet":"grate","manhole":"drain","man_made":"manhole"} - \x0001e6100000ca71022e23763e40f086342a70d84d40ca71022e23763e40f086342a70d84d407c01000000ca71022e23763e40f086342a70d84d40fe | node | 8530936200 | 1 | | {"board_type":"history","information":"board","name":"Аполлон","tourism":"information"} - \x0001e61000006372b4f4b2753e40d50fa0956ad84d406372b4f4b2753e40d50fa0956ad84d407c010000006372b4f4b2753e40d50fa0956ad84d40fe | node | 9140565043 | 1 | | {"ford":"yes"} - \x0001e6100000a91f8ab8ef753e40786ffbd467d84d40a91f8ab8ef753e40786ffbd467d84d407c01000000a91f8ab8ef753e40786ffbd467d84d40fe | node | 9140576937 | 3 | | {"drain":"no"} - \x0001e610000003d0285dfa753e40773bb13d69d84d4003d0285dfa753e40773bb13d69d84d407c0100000003d0285dfa753e40773bb13d69d84d40fe | node | 9140576938 | 4 | | {"drain":"no"} - \x0001e6100000e50d30f31d763e40bd885baa77d84d40e50d30f31d763e40bd885baa77d84d407c01000000e50d30f31d763e40bd885baa77d84d40fe | node | 9143069530 | 5 | | {"drain":"no","source:direction":"survey"} - \x0001e61000009da62ac82a763e4045f69c4f78d84d409da62ac82a763e4045f69c4f78d84d407c010000009da62ac82a763e4045f69c4f78d84d40fe | node | 9143069534 | 1 | | {"amenity":"bench","backrest":"yes","material":"wood"} - \x0001e6100000c712d6c6d8753e4043345fca65d84d40c712d6c6d8753e4043345fca65d84d407c01000000c712d6c6d8753e4043345fca65d84d40fe | node | 9143093777 | 1 | | {"manhole":"telecom","man_made":"manhole"} - \x0001e6100000d4c3865dca753e40f57c72b966d84d40d4c3865dca753e40f57c72b966d84d407c01000000d4c3865dca753e40f57c72b966d84d40fe | node | 9143093778 | 1 | | {"manhole":"telecom","man_made":"manhole"} - \x0001e61000002c80290307763e406939d0436dd84d402c80290307763e406939d0436dd84d407c010000002c80290307763e406939d0436dd84d40fe | node | 9143093802 | 4 | | {"drain":"no"} - \x0001e61000004a2943b005763e40ccbe863b72d84d404a2943b005763e40ccbe863b72d84d407c010000004a2943b005763e40ccbe863b72d84d40fe | node | 9143093804 | 3 | | {"drain":"no"} - \x0001e6100000cd80690712763e40d55a988576d84d40cd80690712763e40d55a988576d84d407c01000000cd80690712763e40d55a988576d84d40fe | node | 9143093806 | 4 | | {"drain":"no"} - \x0001e6100000529b38b9df753e40a1f1e95674d84d40529b38b9df753e40a1f1e95674d84d407c01000000529b38b9df753e40a1f1e95674d84d40fe | node | 9656736571 | 2 | | {"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"} - \x0001e61000004cd0155bf7753e4060048d9944d84d40e91a1cdb21763e40d872785270d84d407c02000000040000004cd0155bf7753e4060048d9944d84d4078e0ad3dfd753e40454eba884ad84d40b8c3cb7800763e40af8273a14dd84d40e91a1cdb21763e40d872785270d84d40fe | way | 30995960 | 42 | {9140727117,5251698420,1518870630,1632497615} | {"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} - \x0001e6100000691f86b1e0753e40716193eb5cd84d401ecb715de7753e40840948a066d84d407c0200000007000000b02770a1e1753e40716193eb5cd84d40691f86b1e0753e4093e34ee960d84d403af70d02e1753e403908dfa062d84d40b08394e9e1753e40387870c163d84d40f1868fe3e2753e404a9baa7b64d84d401a42846ee5753e40ba50549165d84d401ecb715de7753e40840948a066d84d40fe | way | 149099004 | 8 | {1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e610000071f618f6c5753e4004858b2661d84d40f29df3aed5753e4073a48ee964d84d407c02000000140000008dcf0946ca753e4073a48ee964d84d40f3b4577ac8753e40de8893a064d84d40534dff48c7753e4067b4554964d84d4035c4c25ac6753e40f1b105ce63d84d4071f618f6c5753e40c175204663d84d40ace0b721c6753e40fd7964bd62d84d40be03f2dbc6753e40743a353c62d84d4058665b17c8753e408cf2cccb61d84d40341477bcc9753e40815eb87361d84d40621c12adcb753e408d3a843b61d84d400ea2b5a2cd753e4004858b2661d84d400d26b49bcf753e40933f733161d84d409b36887bd1753e40a5aa645b61d84d4094fd4eeed2753e40d48a259b61d84d402e60b829d4753e40e01e3af361d84d407568a219d5753e40216aec5c62d84d40f29df3aed5753e40d328c9df62d84d40c81e46add5753e40c7a8216063d84d40ec3ce070d5753e4044b060d163d84d4099863cddd4753e404a3f863364d84d40fe | way | 149099028 | 5 | {9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949} | {"barrier":"fence","colour":"green","fence_type":"wood","height":"2"} - \x0001e6100000339875b5cb753e40487254c95bd84d4074266daaee753e407073cf5f8dd84d407c0200000017000000339875b5cb753e407073cf5f8dd84d4097321587d8753e40ac51b41776d84d40919db7b1d9753e40893952c774d84d40547fceeeda753e404e976a0b74d84d40a7a503a3dc753e40b3ec496073d84d406ff02a10e2753e40a8e8a3e771d84d40304ad05fe8753e4055f0805770d84d40b735d88aec753e40f116a3096fd84d40f1475167ee753e40929ed8f96dd84d4074266daaee753e40e027b3e66cd84d40aaf7af07ee753e4076d954826ad84d405da21fb2ed753e40b8b475cb69d84d408d6e7319ed753e40fa6184f068d84d40bd827ef0eb753e4066321ccf67d84d40473eaf78ea753e405ab8acc266d84d40830074f3e8753e4043345fca65d84d40efeab01de7753e40fcfd62b664d84d40c69f4db3e5753e408010c99063d84d40af1b00bbe4753e407468476062d84d4038eb9d1be4753e40b186302361d84d4050ff59f3e3753e4040eb2b595fd84d40626a4b1de4753e4000a6b1625dd84d407a7e07f5e3753e40487254c95bd84d40fe | way | 149099029 | 36 | {9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684} | {"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"} - \x0001e610000003d0285dfa753e40773bb13d69d84d4018c110830a763e40f99dcb796bd84d407c020000000200000018c110830a763e40f99dcb796bd84d4003d0285dfa753e40773bb13d69d84d40fe | way | 149099034 | 9 | {1632503255,9140576938} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e6100000e91a1cdb21763e40d872785270d84d4053cdaca580763e40ba707bdd7dd84d407c020000000200000053cdaca580763e40ba707bdd7dd84d40e91a1cdb21763e40d872785270d84d40fe | way | 150294524 | 8 | {1239612692,1632497615} | {"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e61000002f1114e40c763e404c12f0106bd84d40915d0e6036763e40d618198975d84d407c020000002500000029290bba18763e40ca56f20c75d84d40a4f6c7201c763e402fee505e75d84d405bae23b31f763e404159428875d84d4089de985423763e40d618198975d84d403f96f4e626763e4082ecab6175d84d4038e1b9522a763e40dc93d11275d84d4084ceb5792d763e40a14d0e9f74d84d40db696b4430763e402418bd0974d84d40223e0b9d32763e404eb10f5773d84d40b653ce7234763e403156e58c72d84d40f6b2edb435763e40de431db171d84d4014e0055b36763e40fc766dca70d84d40915d0e6036763e4032ec8bdf6fd84d406d2b07c435763e40501fdcf86ed84d4027c7f88b34763e40684d3d1c6ed84d408dac46c032763e40217365506dd84d4017540a7030763e40228d0a9c6cd84d403c365daa2d763e40e71835046cd84d409745178a2a763e40ed93ed8d6bd84d401c785a2327763e4088fc8e3c6bd84d4065c0fe9023763e4076919d126bd84d40379089ef1f763e404c12f0106bd84d4080d82d5d1c763e409f3e5d386bd84d40888d68f118763e40469737876bd84d403ca06cca15763e40169dd1fb6bd84d40e404b7ff12763e4093d222916cd84d409e3017a710763e406939d0436dd84d400a1b54d10e763e408694fa0d6ed84d40c9bb348f0d763e40d9a6c2e96ed84d40ac8e1ce90c763e40bb7372d06fd84d402f1114e40c763e40f03e7dba70d84d4052431b800d763e4067cb03a271d84d4099a729b80e763e404e9da27e72d84d4033c2db8310763e4095777a4a73d84d40a91a18d412763e40955dd5fe73d84d405ab9179815763e403b12d49574d84d4029290bba18763e40ca56f20c75d84d40fe | way | 150294525 | 6 | {1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686} | {"name":"Дубовое кольцо"} - \x0001e6100000a7a503a3dc753e40d872785270d84d40e91a1cdb21763e408368ad6873d84d407c0200000006000000e91a1cdb21763e40d872785270d84d40ba6a9e23f2753e40d7aebfdb72d84d406a1492ccea753e40e947c32973d84d4014854ce8e4753e40e370e65773d84d4040a0d8afe0753e408368ad6873d84d40a7a503a3dc753e40b3ec496073d84d40fe | way | 150294532 | 30 | {1632497615,1632220252,9140727238,9140727242,9140727239,1621246592} | {"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e61000007a7e07f5e3753e40487254c95bd84d40e91a1cdb21763e40d872785270d84d407c02000000020000007a7e07f5e3753e40487254c95bd84d40e91a1cdb21763e40d872785270d84d40fe | way | 150294541 | 8 | {1239612684,1632497615} | {"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e6100000e91a1cdb21763e403ed6427f57d84d405cf45f3134763e40d872785270d84d407c0200000002000000e91a1cdb21763e40d872785270d84d405cf45f3134763e403ed6427f57d84d40fe | way | 150294547 | 9 | {1632497615,1518870645} | {"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e6100000e2ab1dc539763e40df217b736ed84d40003961c268763e4007616ef772d84d407c0200000006000000e2ab1dc539763e4007616ef772d84d40f33ee99f3b763e40f53d343d72d84d400442469b3e763e406198028871d84d40c05ab56b42763e405b7fa6b970d84d4076960ff747763e40263ed23b70d84d40003961c268763e40df217b736ed84d40fe | way | 152440395 | 6 | {1652587944,1652587948,1652587950,9143093800,1652587952,1652587953} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - \x0001e6100000f747ce7811763e400ccd751a69d84d4053f06f2b18763e4011e6d1e869d84d407c020000000300000053f06f2b18763e400ccd751a69d84d40015aa95615763e400c299a6269d84d40f747ce7811763e4011e6d1e869d84d40fe | way | 152442436 | 10 | {1652605207,9143204222,1632503254} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e610000039db375211763e40fee4396c6cd84d408b96f2107c763e403dd68c0c72d84d407c020000000400000039db375211763e403dd68c0c72d84d40dab91fa633763e40384d9f1d70d84d40e1ffd8356b763e40a4c74a276dd84d408b96f2107c763e40fee4396c6cd84d40fe | way | 311975108 | 20 | {3188928044,3177639362,8331430683,7911801321} | {"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"} - \x0001e61000004a2943b005763e40ccbe863b72d84d40c3de1f4a0f763e40769a160676d84d407c0200000006000000c3de1f4a0f763e40769a160676d84d408ebd288b0c763e4094298b6775d84d40d25c024b09763e405326906d74d84d4097a6adb607763e4089c9c0a673d84d400e0b5aed06763e408f44793073d84d404a2943b005763e40ccbe863b72d84d40fe | way | 313051687 | 8 | {1632503180,9143069533,9143093805,9143069532,1632503185,9143093804} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e610000017e5e324de753e405add45f35bd84d4009afb893e3753e407e1efef565d84d407c020000000e00000052f75c01e0753e405add45f35bd84d401150864fdf753e403379b93e62d84d40342669a3df753e408c90701063d84d40d57954fcdf753e403e4f4d9363d84d40879455c7e0753e409105f12664d84d40572426a8e1753e403287eea364d84d4009afb893e3753e4084f5dac765d84d4074513e4ee2753e407e1efef565d84d40bdc1bc6ce0753e404925e1e764d84d4088c89f5edf753e405c4e531564d84d40649698c2de753e40d9e5006663d84d4017e5e324de753e406e63586a62d84d4029081edfde753e40addba0f65bd84d4052f75c01e0753e405add45f35bd84d40fe | way | 426269715 | 5 | {4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051} | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} - \x0001e610000083ae3374a2753e4028dab0016cd84d40a7a503a3dc753e40b3ec496073d84d407c020000000e000000a7a503a3dc753e40b3ec496073d84d40c19d55b0d7753e4090e854e872d84d40b25eb12bd2753e4054466d2c72d84d400af1ed02ca753e40731d99fd70d84d40a252db3cc4753e40b59c95fe6fd84d403a443756bd753e403e86d8aa6ed84d4091d6732db5753e4069ddabfb6cd84d40529731aab1753e40fee4396c6cd84d40181527adae753e4016cbe31f6cd84d40671a03a1ab753e4028dab0016cd84d409d1f9095a9753e401098e2056cd84d40211e8997a7753e40bdc799266cd84d4064d1cf2fa5753e40bd23be6e6cd84d4083ae3374a2753e40f26492ec6cd84d40fe | way | 438780267 | 20 | {1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957} | {"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"} - \x0001e6100000e91a1cdb21763e409faeee586cd84d4077c5e7a969763e40d872785270d84d407c020000000200000077c5e7a969763e409faeee586cd84d40e91a1cdb21763e40d872785270d84d40fe | way | 750779153 | 4 | {1632220250,1632497615} | {"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e6100000e91a1cdb21763e40d872785270d84d40c0b56ede93763e40407331618fd84d407c0200000002000000e91a1cdb21763e40d872785270d84d40c0b56ede93763e40407331618fd84d40fe | way | 750779155 | 5 | {1632497615,1195120146} | {"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e61000008d6e7319ed753e40fa6184f068d84d40e91a1cdb21763e40d872785270d84d407c0200000002000000e91a1cdb21763e40d872785270d84d408d6e7319ed753e40fa6184f068d84d40fe | way | 750779156 | 5 | {1632497615,1621246419} | {"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e6100000e91a1cdb21763e40d872785270d84d402e69d6636c763e407143424aa2d84d407c0200000002000000e91a1cdb21763e40d872785270d84d402e69d6636c763e407143424aa2d84d40fe | way | 750779157 | 4 | {1632497615,1652587960} | {"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} - \x0001e61000005f251fbb0b763e40d872785270d84d40e91a1cdb21763e409fa97c748fd84d407c02000000030000005f251fbb0b763e409fa97c748fd84d40bc9179e40f763e403db4345c89d84d40e91a1cdb21763e40d872785270d84d40fe | way | 750779158 | 4 | {9159459639,1239612686,1632497615} | {"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e61000009d1f9095a9753e40468ebe9360d84d40f89969b1ca753e401098e2056cd84d407c02000000150000009d1f9095a9753e401098e2056cd84d40bfe90203ad753e40580229b16bd84d40649291b3b0753e40463b133f6bd84d40691b7fa2b2753e4058eebbd86ad84d406372b4f4b2753e40d50fa0956ad84d40d4410356b3753e40053818456ad84d40387705ecb4753e40d6fb32bd69d84d4078b6476fb8753e4083458f2969d84d408751103cbe753e405309aaa168d84d402bc65455c3753e40b387ac2468d84d40fa21db9ec5753e40c53a55be67d84d40d06ee305c7753e407284b12a67d84d40f949b54fc7753e40ef1b5f7b66d84d40948444dac6753e40a23c98b965d84d40fbb1497ec4753e40970ae01c64d84d40b4f116fec2753e407a81a32e63d84d40028f5ec3c2753e406ebf7cb262d84d40074c9649c3753e40c233a14962d84d4095b88e71c5753e40ce8536a561d84d40641415bbc7753e40f84c9b1661d84d40f89969b1ca753e40468ebe9360d84d40fe | way | 988944864 | 2 | {9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340} | {"highway":"path","surface":"ground"} - \x0001e6100000a91f8ab8ef753e40786ffbd467d84d4005b4be92f5753e4030bdfdb968d84d407c020000000200000005b4be92f5753e4030bdfdb968d84d40a91f8ab8ef753e40786ffbd467d84d40fe | way | 988944880 | 3 | {9140576936,9140576937} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e6100000fdfa7cefca753e400edf1d7464d84d407ae81615cc753e40cc79c6be64d84d407c02000000090000002ddb3d2fcb753e40bb3ce7b864d84d401523a69fcb753e40cc79c6be64d84d405c7347ffcb753e402c82ffad64d84d407ae81615cc753e4067107a9164d84d404a0856d5cb753e40201cfd7964d84d4062c0ed64cb753e400edf1d7464d84d401b704c05cb753e40afd6e48464d84d40fdfa7cefca753e40de8893a064d84d402ddb3d2fcb753e40bb3ce7b864d84d40fe | way | 989184163 | 1 | {9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - \x0001e61000003e6e090acd753e400eb10b5064d84d40ba5ba32fce753e40388cdd9964d84d407c02000000090000006d4eca49cd753e40bb0ed59464d84d40559632bacd753e40388cdd9964d84d409de6d319ce753e402c54ed8964d84d40ba5ba32fce753e4067e2676d64d84d408b7be2efcd753e408b2e145564d84d4079b4cc7dcd753e400eb10b5064d84d405ce3d81fcd753e401ae9fb5f64d84d403e6e090acd753e40de5a817c64d84d406d4eca49cd753e40bb0ed59464d84d40fe | way | 989184166 | 1 | {9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - \x0001e6100000e50d30f31d763e407b99cd8877d84d40db04ce0825763e40bd885baa77d84d407c0200000003000000db04ce0825763e407b99cd8877d84d40244d727621763e40bd885baa77d84d40e50d30f31d763e40bd885baa77d84d40fe | way | 989211851 | 4 | {1652605211,9143069529,9143069530} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e61000009f34796fb1753e404e976a0b74d84d40547fceeeda753e40ed6e545d76d84d407c0200000002000000547fceeeda753e404e976a0b74d84d409f34796fb1753e40ed6e545d76d84d40fe | way | 989211857 | 12 | {8650331583,4260007752} | {"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"} - \x0001e6100000e4e3c924d9753e40ad437fb273d84d4067f3380ce6753e40ab31d75878d84d407c0200000006000000e4e3c924d9753e40ab31d75878d84d407eb6c480db753e40b819130775d84d40b3afe18edc753e40dc7f643a74d84d4053cf8250de753e4036278aeb73d84d4028e84020e1753e40ee320dd473d84d4067f3380ce6753e40ad437fb273d84d40fe | way | 989211858 | 1 | {9143069609,9143069608,9143069607,9143069606,9143069605,9143069604} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000f83cda931b763e409540ef3268d84d400c61904f23763e4028f4554d6bd84d407c0200000005000000f83cda931b763e409540ef3268d84d40eaca67791e763e4028f4554d6bd84d406d75392520763e4088fc8e3c6bd84d400c95dae621763e4088fc8e3c6bd84d400c61904f23763e4017b776476bd84d40fe | way | 989211859 | 1 | {9143093728,9143093727,9143093726,9143093725,9143093724} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000db79d10d03763e405b1a097e65d84d405da626c11b763e40048e041a6cd84d407c0200000006000000dc2f9fac18763e40c5f29d4e68d84d405da626c11b763e4010e099756bd84d401129bcba19763e40f3c6eea76bd84d4071091bf917763e408de7d8e66bd84d40d7a6b1bd16763e40048e041a6cd84d40db79d10d03763e405b1a097e65d84d40fe | way | 989211860 | 1 | {9143093729,9143093730,9143093731,9143093732,9143093734,9143093733} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e61000005858703fe0753e40fa75f1c869d84d40ce44227e0f763e40d1a9d0e572d84d407c02000000120000004c9a50d20d763e40d8ce9c9a70d84d402f2581bc0d763e40619e3afb6fd84d406a0f20e80d763e402025766d6fd84d40994b05700e763e40dfabb1df6ed84d4081936de00e763e40f15e5a796ed84d40ce44227e0f763e40278cc11e6ed84d40e50929e4ef753e40fa75f1c869d84d407ae3a430ef753e40fa75f1c869d84d40f70489edee753e405fdf3df669d84d40fdc1c073ef753e40db70b3d36ad84d40a91f8ab8ef753e407016e5886bd84d40e50929e4ef753e40d4939e8e6cd84d404a737511f0753e4081d7c2876dd84d40df4cf15def753e4039f7b2486ed84d40a4969cc9ed753e40c7c5072c6fd84d40d53a1680eb753e40321a9e0370d84d4066bfee74e7753e4049ccfd1f71d84d405858703fe0753e40d1a9d0e572d84d40fe | way | 989211861 | 1 | {9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000fcccb458e5753e40839e72f15cd84d40902e36ad14763e409214a28d6dd84d407c020000001100000061360186e5753e40839e72f15cd84d4061360186e5753e40e12aaad95ed84d40fcccb458e5753e408d823bab60d84d407fabd09be5753e40f2fff4b061d84d40cc5c8539e6753e405078bfc062d84d409cec551ae7753e40bbcc559863d84d40002258b0e8753e40146e43d664d84d400b687d25eb753e40a827e26366d84d400a34338eec753e40e92add5d67d84d40a4969cc9ed753e40b9e8bf6268d84d402d32f092ee753e40063e50b868d84d409167f228f0753e401edc42fc68d84d40aa9619db10763e409214a28d6dd84d4086e8103812763e40d44be71e6dd84d405b35199f13763e405744a8ad6cd84d40902e36ad14763e40ce609d746cd84d400c1e4bc400763e402b20a3f265d84d40fe | way | 989211862 | 1 | {9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000e8a8fe9cdd753e40716193eb5cd84d40dac3036fed753e40e35c797f72d84d407c0200000013000000aa9212cce2753e40716193eb5cd84d40aa9212cce2753e40a69c2ff65ed84d404529c69ee2753e407b455ca560d84d400ffc5ef9e2753e40452c62d861d84d407a22e3ace3753e40f16f86d162d84d400ec81462e4753e40a98f769263d84d40497e69f6e5753e40023164d064d84d407d433c6de8753e4096ea025e66d84d40539044d4e9753e40d7edfd5767d84d40f3afe595eb753e405309aaa168d84d408755174bec753e40b28174b169d84d408d124fd1ec753e40293c0dbd6ad84d4057e5e72bed753e40d57f31b66bd84d40dac3036fed753e40c8b7d2c66cd84d4057e5e72bed753e4009bbcdc06dd84d40dbf74d06ec753e40740f64986ed84d403bd8ac44ea753e40c7c5072c6fd84d40962f1e94e6753e40de77674870d84d40e8a8fe9cdd753e40e35c797f72d84d40fe | way | 989211863 | 1 | {9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e61000004f7ee60709763e40f99dcb796bd84d4018c110830a763e40e64647286cd84d407c02000000020000004f7ee60709763e40e64647286cd84d4018c110830a763e40f99dcb796bd84d40fe | way | 989211868 | 4 | {9143093801,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e610000018c110830a763e40f3846fab6ad84d4070140fde0d763e40f99dcb796bd84d407c020000000200000070140fde0d763e40f3846fab6ad84d4018c110830a763e40f99dcb796bd84d40fe | way | 989211869 | 4 | {1632503177,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e6100000da45877604763e406939d0436dd84d402c80290307763e40c677184971d84d407c02000000040000004510e7e104763e40c677184971d84d40da45877604763e407fe5f7ec6fd84d40456c0b2a05763e40a465ee6b6ed84d402c80290307763e406939d0436dd84d40fe | way | 989211870 | 4 | {1632503179,9143093803,1632503181,9143093802} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e6100000cd80690712763e40d55a988576d84d404c27c8be1a763e40289b728577d84d407c02000000040000004c27c8be1a763e40289b728577d84d405951836918763e40a5ea686677d84d4096a3b6c315763e406ad2b71677d84d40cd80690712763e40d55a988576d84d40fe | way | 989211871 | 4 | {1652605209,9143069531,1632503237,9143093806} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - \x0001e6100000e91a1cdb21763e40ace9d55b5ed84d408682082758763e40d872785270d84d407c0200000002000000e91a1cdb21763e40d872785270d84d408682082758763e40ace9d55b5ed84d40fe | way | 991343632 | 2 | {1632497615,1518870652} | {"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e6100000df420d9535763e40804754a86ed84d40ee2e06c545763e40678984a570d84d407c0200000005000000ee2e06c545763e40804754a86ed84d40df420d9535763e403895568d6fd84d406d2b07c435763e409d2cb5de6fd84d40b51f84db35763e40793c2d3f70d84d40d39453f135763e40678984a570d84d40fe | way | 991343633 | 1 | {9159456550,9159456549,9159456545,9159456544,9159456543} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000e006c60b33763e404b7c49be6dd84d40e871ce3e45763e4092b245d26ed84d407c0200000005000000e871ce3e45763e40da6443ed6dd84d40d985d50e35763e4092b245d26ed84d40fd474b8a34763e40f15e5a796ed84d40b09696ec33763e40278cc11e6ed84d40e006c60b33763e404b7c49be6dd84d40fe | way | 991343634 | 1 | {9159456552,9159456551,9159456548,9159456547,9159456546} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000c305eaded4753e40ff97c68a75d84d40ce93c6c3d6753e4022aaf06778d84d407c0200000002000000c305eaded4753e4022aaf06778d84d40ce93c6c3d6753e40ff97c68a75d84d40fe | way | 991343661 | 1 | {9159459675,9159459674} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - \x0001e6100000339875b5cb753e40d872785270d84d40e91a1cdb21763e407073cf5f8dd84d407c0200000002000000339875b5cb753e407073cf5f8dd84d40e91a1cdb21763e40d872785270d84d40fe | way | 1042527594 | 11 | {9140727237,1632497615} | {"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"} - \x0001e61000002f1114e40c763e404c12f0106bd84d40915d0e6036763e40d618198975d84d407c0300000001000000250000002f1114e40c763e40f03e7dba70d84d40ac8e1ce90c763e40bb7372d06fd84d40c9bb348f0d763e40d9a6c2e96ed84d400a1b54d10e763e408694fa0d6ed84d409e3017a710763e406939d0436dd84d40e404b7ff12763e4093d222916cd84d403ca06cca15763e40169dd1fb6bd84d40888d68f118763e40469737876bd84d4080d82d5d1c763e409f3e5d386bd84d40379089ef1f763e404c12f0106bd84d4065c0fe9023763e4076919d126bd84d401c785a2327763e4088fc8e3c6bd84d409745178a2a763e40ed93ed8d6bd84d403c365daa2d763e40e71835046cd84d4017540a7030763e40228d0a9c6cd84d408dac46c032763e40217365506dd84d4027c7f88b34763e40684d3d1c6ed84d406d2b07c435763e40501fdcf86ed84d40915d0e6036763e4032ec8bdf6fd84d4014e0055b36763e40fc766dca70d84d40f6b2edb435763e40de431db171d84d40b653ce7234763e403156e58c72d84d40223e0b9d32763e404eb10f5773d84d40db696b4430763e402418bd0974d84d4084ceb5792d763e40a14d0e9f74d84d4038e1b9522a763e40dc93d11275d84d403f96f4e626763e4082ecab6175d84d4089de985423763e40d618198975d84d405bae23b31f763e404159428875d84d40a4f6c7201c763e402fee505e75d84d4029290bba18763e40ca56f20c75d84d405ab9179815763e403b12d49574d84d40a91a18d412763e40955dd5fe73d84d4033c2db8310763e4095777a4a73d84d4099a729b80e763e404e9da27e72d84d4052431b800d763e4067cb03a271d84d402f1114e40c763e40f03e7dba70d84d40fe | way | 150294525 | 6 | | {"name":"Дубовое кольцо"} - \x0001e610000017e5e324de753e405add45f35bd84d4009afb893e3753e407e1efef565d84d407c03000000010000000e00000017e5e324de753e406e63586a62d84d4029081edfde753e40addba0f65bd84d4052f75c01e0753e405add45f35bd84d401150864fdf753e403379b93e62d84d40342669a3df753e408c90701063d84d40d57954fcdf753e403e4f4d9363d84d40879455c7e0753e409105f12664d84d40572426a8e1753e403287eea364d84d4009afb893e3753e4084f5dac765d84d4074513e4ee2753e407e1efef565d84d40bdc1bc6ce0753e404925e1e764d84d4088c89f5edf753e405c4e531564d84d40649698c2de753e40d9e5006663d84d4017e5e324de753e406e63586a62d84d40fe | way | 426269715 | 5 | | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} - \x0001e6100000fdfa7cefca753e400edf1d7464d84d407ae81615cc753e40cc79c6be64d84d407c030000000100000009000000fdfa7cefca753e40de8893a064d84d401b704c05cb753e40afd6e48464d84d4062c0ed64cb753e400edf1d7464d84d404a0856d5cb753e40201cfd7964d84d407ae81615cc753e4067107a9164d84d405c7347ffcb753e402c82ffad64d84d401523a69fcb753e40cc79c6be64d84d402ddb3d2fcb753e40bb3ce7b864d84d40fdfa7cefca753e40de8893a064d84d40fe | way | 989184163 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - \x0001e61000003e6e090acd753e400eb10b5064d84d40ba5ba32fce753e40388cdd9964d84d407c0300000001000000090000003e6e090acd753e40de5a817c64d84d405ce3d81fcd753e401ae9fb5f64d84d4079b4cc7dcd753e400eb10b5064d84d408b7be2efcd753e408b2e145564d84d40ba5ba32fce753e4067e2676d64d84d409de6d319ce753e402c54ed8964d84d40559632bacd753e40388cdd9964d84d406d4eca49cd753e40bb0ed59464d84d403e6e090acd753e40de5a817c64d84d40fe | way | 989184166 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} -(111 rows) - ---Testcase 77: -ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE geometry; ---Testcase 78: -SELECT * FROM "♁ FDW"; - geom | osm_type | osm_id | ver | arr | t ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 0101000020E6100000F747CE7811763E4011E6D1E869D84D40 | node | 1632503254 | 6 | | {"drain":"no"} - 0101000020E610000003756FEAA8753E4064B0E2546BD84D40 | node | 1621246531 | 4 | | {"drain":"disperse"} - 0101000020E6100000621C12ADCB753E408D3A843B61D84D40 | node | 1621246620 | 24 | | {"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"} - 0101000020E6100000223E0B9D32763E404EB10F5773D84D40 | node | 1632220259 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000915D0E6036763E4032EC8BDF6FD84D40 | node | 1632220283 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000F6B2EDB435763E40DE431DB171D84D40 | node | 1632220292 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000065C0FE9023763E4076919D126BD84D40 | node | 1632220315 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000009745178A2A763E40ED93ED8D6BD84D40 | node | 1632220319 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E6100000C9BB348F0D763E40D9A6C2E96ED84D40 | node | 1632220350 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000009E3017A710763E406939D0436DD84D40 | node | 1632220355 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000003CA06CCA15763E40169DD1FB6BD84D40 | node | 1632220358 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000002F1114E40C763E40F03E7DBA70D84D40 | node | 1632220359 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E61000005BAE23B31F763E404159428875D84D40 | node | 1632220364 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000099A729B80E763E404E9DA27E72D84D40 | node | 1632220366 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000017540A7030763E40228D0A9C6CD84D40 | node | 1632220378 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000084CEB5792D763E40A14D0E9F74D84D40 | node | 1632220590 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0101000020E610000029290BBA18763E40CA56F20C75D84D40 | node | 1632220686 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} - 0102000020E6100000030000001ECB715DE7753E40840948A066D84D406372B4F4B2753E40D50FA0956AD84D4003756FEAA8753E4064B0E2546BD84D40 | way | 149099000 | 6 | {1621246509,9140565043,1621246531} | {"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"} - 0102000020E610000002000000189A46EE44763E40A3795B446FD84D4076960FF747763E40263ED23B70D84D40 | way | 989211867 | 2 | {1652587955,1652587952} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - 0101000020E6100000BDE2A9471A763E40DB0E57186CD84D40 | node | 1632497609 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"} - 0101000020E610000025F14D2E21763E401C469CA96BD84D40 | node | 1632497610 | 30 | | {"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"} - 0101000020E6100000EA79371614763E40B0FF3A376DD84D40 | node | 1632497611 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"} - 0101000020E61000002152787533763E400E10711871D84D40 | node | 1632497612 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"} - 0101000020E6100000A9F8BF232A763E401CD0D2156CD84D40 | node | 1632497613 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"} - 0101000020E6100000B1A206D330763E40AA5670896DD84D40 | node | 1632497614 | 29 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"} - 0101000020E61000003A0D07F824763E408F9A650575D84D40 | node | 4912277783 | 4 | | {"board_type":"history","information":"board","name":"Меркурий","tourism":"information"} - 0102000020E6100000040000003E038F1436763E40054C851D6BD84D40719417F439763E406FA01BF56BD84D4034B275BA3D763E40EC5FA3F66CD84D40D39DCCE440763E40E09744076ED84D40 | way | 152442438 | 8 | {1652605205,1652605201,1652605200,1652587958} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - 0101000020E6100000E91A1CDB21763E40D872785270D84D40 | node | 1632497615 | 34 | | {"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"} - 0101000020E6100000D243238E2B763E4083D83E8974D84D40 | node | 1632497616 | 26 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"} - 0101000020E61000005F341AAF2F763E40F409EAA573D84D40 | node | 1632497617 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"} - 0101000020E61000004232D3AC22763E402F922C1675D84D40 | node | 1632497618 | 30 | | {"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"} - 0101000020E6100000AC634B4519763E40B28AEDA474D84D40 | node | 1632497619 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"} - 0101000020E6100000D32934B511763E40AD2F12DA72D84D40 | node | 1632497620 | 31 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"} - 0101000020E6100000CEA046C60F763E40D95E0B7A6FD84D40 | node | 1632497621 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"} - 0101000020E6100000003961C268763E40DF217B736ED84D40 | node | 1652587953 | 5 | | {"drain":"no"} - 0101000020E6100000D39DCCE440763E40E09744076ED84D40 | node | 1652587958 | 5 | | {"drain":"no"} - 0101000020E6100000DAB91FA633763E40384D9F1D70D84D40 | node | 3177639362 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} - 0101000020E610000039DB375211763E403DD68C0C72D84D40 | node | 3188928044 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} - 0101000020E61000003B246BC317763E405451611168D84D40 | node | 3218618266 | 4 | | {"amenity":"bench","backrest":"yes","material":"wood"} - 0101000020E610000049E70D411F763E403ABB6BBF6BD84D40 | node | 4912277772 | 4 | | {"board_type":"history","information":"board","name":"Флора","tourism":"information"} - 0101000020E61000001587D80528763E4034E48EED6BD84D40 | node | 4912277773 | 4 | | {"board_type":"history","information":"board","name":"Урания","tourism":"information"} - 0101000020E6100000ACAB02B518763E40F8B138526CD84D40 | node | 4912277774 | 4 | | {"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"} - 0101000020E6100000B23275B22F763E40153B75406DD84D40 | node | 4912277775 | 4 | | {"board_type":"history","information":"board","name":"Клио","tourism":"information"} - 0101000020E61000007335689E12763E40098DBB9C6DD84D40 | node | 4912277776 | 4 | | {"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"} - 0101000020E6100000C23A44920F763E40AF97A60870D84D40 | node | 4912277777 | 4 | | {"board_type":"history","information":"board","name":"Талия","tourism":"information"} - 0101000020E610000074ACF7C033763E404914B58F70D84D40 | node | 4912277778 | 4 | | {"board_type":"history","information":"board","name":"Калиопа","tourism":"information"} - 0101000020E6100000CDF0FA2713763E40D105F52D73D84D40 | node | 4912277779 | 4 | | {"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"} - 0101000020E6100000B7A7F5C830763E40E342D43373D84D40 | node | 4912277780 | 4 | | {"board_type":"history","information":"board","name":"Полигимния","tourism":"information"} - 0101000020E610000096253ACB2C763E402474E15174D84D40 | node | 4912277781 | 4 | | {"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"} - 0101000020E610000045DA21591B763E4065BF93BB74D84D40 | node | 4912277782 | 4 | | {"board_type":"history","information":"board","name":"Эрато","tourism":"information"} - 0101000020E610000078E0AD3DFD753E40454EBA884AD84D40 | node | 5251698420 | 25 | | {"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"} - 0101000020E610000042AF3F89CF753E407F805AB164D84D40 | node | 6758903438 | 6 | | {"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"} - 0101000020E6100000E1FFD8356B763E40A4C74A276DD84D40 | node | 8331430683 | 3 | | {"inlet":"grate","manhole":"drain","man_made":"manhole"} - 0101000020E6100000CA71022E23763E40F086342A70D84D40 | node | 8530936200 | 1 | | {"board_type":"history","information":"board","name":"Аполлон","tourism":"information"} - 0101000020E61000006372B4F4B2753E40D50FA0956AD84D40 | node | 9140565043 | 1 | | {"ford":"yes"} - 0101000020E6100000A91F8AB8EF753E40786FFBD467D84D40 | node | 9140576937 | 3 | | {"drain":"no"} - 0101000020E610000003D0285DFA753E40773BB13D69D84D40 | node | 9140576938 | 4 | | {"drain":"no"} - 0101000020E6100000E50D30F31D763E40BD885BAA77D84D40 | node | 9143069530 | 5 | | {"drain":"no","source:direction":"survey"} - 0101000020E61000009DA62AC82A763E4045F69C4F78D84D40 | node | 9143069534 | 1 | | {"amenity":"bench","backrest":"yes","material":"wood"} - 0101000020E6100000C712D6C6D8753E4043345FCA65D84D40 | node | 9143093777 | 1 | | {"manhole":"telecom","man_made":"manhole"} - 0101000020E6100000D4C3865DCA753E40F57C72B966D84D40 | node | 9143093778 | 1 | | {"manhole":"telecom","man_made":"manhole"} - 0101000020E61000002C80290307763E406939D0436DD84D40 | node | 9143093802 | 4 | | {"drain":"no"} - 0101000020E61000004A2943B005763E40CCBE863B72D84D40 | node | 9143093804 | 3 | | {"drain":"no"} - 0101000020E6100000CD80690712763E40D55A988576D84D40 | node | 9143093806 | 4 | | {"drain":"no"} - 0101000020E6100000529B38B9DF753E40A1F1E95674D84D40 | node | 9656736571 | 2 | | {"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"} - 0102000020E6100000040000004CD0155BF7753E4060048D9944D84D4078E0AD3DFD753E40454EBA884AD84D40B8C3CB7800763E40AF8273A14DD84D40E91A1CDB21763E40D872785270D84D40 | way | 30995960 | 42 | {9140727117,5251698420,1518870630,1632497615} | {"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} - 0102000020E610000007000000B02770A1E1753E40716193EB5CD84D40691F86B1E0753E4093E34EE960D84D403AF70D02E1753E403908DFA062D84D40B08394E9E1753E40387870C163D84D40F1868FE3E2753E404A9BAA7B64D84D401A42846EE5753E40BA50549165D84D401ECB715DE7753E40840948A066D84D40 | way | 149099004 | 8 | {1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000140000008DCF0946CA753E4073A48EE964D84D40F3B4577AC8753E40DE8893A064D84D40534DFF48C7753E4067B4554964D84D4035C4C25AC6753E40F1B105CE63D84D4071F618F6C5753E40C175204663D84D40ACE0B721C6753E40FD7964BD62D84D40BE03F2DBC6753E40743A353C62D84D4058665B17C8753E408CF2CCCB61D84D40341477BCC9753E40815EB87361D84D40621C12ADCB753E408D3A843B61D84D400EA2B5A2CD753E4004858B2661D84D400D26B49BCF753E40933F733161D84D409B36887BD1753E40A5AA645B61D84D4094FD4EEED2753E40D48A259B61D84D402E60B829D4753E40E01E3AF361D84D407568A219D5753E40216AEC5C62D84D40F29DF3AED5753E40D328C9DF62D84D40C81E46ADD5753E40C7A8216063D84D40EC3CE070D5753E4044B060D163D84D4099863CDDD4753E404A3F863364D84D40 | way | 149099028 | 5 | {9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949} | {"barrier":"fence","colour":"green","fence_type":"wood","height":"2"} - 0102000020E610000017000000339875B5CB753E407073CF5F8DD84D4097321587D8753E40AC51B41776D84D40919DB7B1D9753E40893952C774D84D40547FCEEEDA753E404E976A0B74D84D40A7A503A3DC753E40B3EC496073D84D406FF02A10E2753E40A8E8A3E771D84D40304AD05FE8753E4055F0805770D84D40B735D88AEC753E40F116A3096FD84D40F1475167EE753E40929ED8F96DD84D4074266DAAEE753E40E027B3E66CD84D40AAF7AF07EE753E4076D954826AD84D405DA21FB2ED753E40B8B475CB69D84D408D6E7319ED753E40FA6184F068D84D40BD827EF0EB753E4066321CCF67D84D40473EAF78EA753E405AB8ACC266D84D40830074F3E8753E4043345FCA65D84D40EFEAB01DE7753E40FCFD62B664D84D40C69F4DB3E5753E408010C99063D84D40AF1B00BBE4753E407468476062D84D4038EB9D1BE4753E40B186302361D84D4050FF59F3E3753E4040EB2B595FD84D40626A4B1DE4753E4000A6B1625DD84D407A7E07F5E3753E40487254C95BD84D40 | way | 149099029 | 36 | {9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684} | {"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"} - 0102000020E61000000200000018C110830A763E40F99DCB796BD84D4003D0285DFA753E40773BB13D69D84D40 | way | 149099034 | 9 | {1632503255,9140576938} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000200000053CDACA580763E40BA707BDD7DD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294524 | 8 | {1239612692,1632497615} | {"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E61000002500000029290BBA18763E40CA56F20C75D84D40A4F6C7201C763E402FEE505E75D84D405BAE23B31F763E404159428875D84D4089DE985423763E40D618198975D84D403F96F4E626763E4082ECAB6175D84D4038E1B9522A763E40DC93D11275D84D4084CEB5792D763E40A14D0E9F74D84D40DB696B4430763E402418BD0974D84D40223E0B9D32763E404EB10F5773D84D40B653CE7234763E403156E58C72D84D40F6B2EDB435763E40DE431DB171D84D4014E0055B36763E40FC766DCA70D84D40915D0E6036763E4032EC8BDF6FD84D406D2B07C435763E40501FDCF86ED84D4027C7F88B34763E40684D3D1C6ED84D408DAC46C032763E40217365506DD84D4017540A7030763E40228D0A9C6CD84D403C365DAA2D763E40E71835046CD84D409745178A2A763E40ED93ED8D6BD84D401C785A2327763E4088FC8E3C6BD84D4065C0FE9023763E4076919D126BD84D40379089EF1F763E404C12F0106BD84D4080D82D5D1C763E409F3E5D386BD84D40888D68F118763E40469737876BD84D403CA06CCA15763E40169DD1FB6BD84D40E404B7FF12763E4093D222916CD84D409E3017A710763E406939D0436DD84D400A1B54D10E763E408694FA0D6ED84D40C9BB348F0D763E40D9A6C2E96ED84D40AC8E1CE90C763E40BB7372D06FD84D402F1114E40C763E40F03E7DBA70D84D4052431B800D763E4067CB03A271D84D4099A729B80E763E404E9DA27E72D84D4033C2DB8310763E4095777A4A73D84D40A91A18D412763E40955DD5FE73D84D405AB9179815763E403B12D49574D84D4029290BBA18763E40CA56F20C75D84D40 | way | 150294525 | 6 | {1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686} | {"name":"Дубовое кольцо"} - 0102000020E610000006000000E91A1CDB21763E40D872785270D84D40BA6A9E23F2753E40D7AEBFDB72D84D406A1492CCEA753E40E947C32973D84D4014854CE8E4753E40E370E65773D84D4040A0D8AFE0753E408368AD6873D84D40A7A503A3DC753E40B3EC496073D84D40 | way | 150294532 | 30 | {1632497615,1632220252,9140727238,9140727242,9140727239,1621246592} | {"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E6100000020000007A7E07F5E3753E40487254C95BD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294541 | 8 | {1239612684,1632497615} | {"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D405CF45F3134763E403ED6427F57D84D40 | way | 150294547 | 9 | {1632497615,1518870645} | {"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000006000000E2AB1DC539763E4007616EF772D84D40F33EE99F3B763E40F53D343D72D84D400442469B3E763E406198028871D84D40C05AB56B42763E405B7FA6B970D84D4076960FF747763E40263ED23B70D84D40003961C268763E40DF217B736ED84D40 | way | 152440395 | 6 | {1652587944,1652587948,1652587950,9143093800,1652587952,1652587953} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} - 0102000020E61000000300000053F06F2B18763E400CCD751A69D84D40015AA95615763E400C299A6269D84D40F747CE7811763E4011E6D1E869D84D40 | way | 152442436 | 10 | {1652605207,9143204222,1632503254} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000400000039DB375211763E403DD68C0C72D84D40DAB91FA633763E40384D9F1D70D84D40E1FFD8356B763E40A4C74A276DD84D408B96F2107C763E40FEE4396C6CD84D40 | way | 311975108 | 20 | {3188928044,3177639362,8331430683,7911801321} | {"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"} - 0102000020E610000006000000C3DE1F4A0F763E40769A160676D84D408EBD288B0C763E4094298B6775D84D40D25C024B09763E405326906D74D84D4097A6ADB607763E4089C9C0A673D84D400E0B5AED06763E408F44793073D84D404A2943B005763E40CCBE863B72D84D40 | way | 313051687 | 8 | {1632503180,9143069533,9143093805,9143069532,1632503185,9143093804} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000E00000052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D40 | way | 426269715 | 5 | {4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051} | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} - 0102000020E61000000E000000A7A503A3DC753E40B3EC496073D84D40C19D55B0D7753E4090E854E872D84D40B25EB12BD2753E4054466D2C72D84D400AF1ED02CA753E40731D99FD70D84D40A252DB3CC4753E40B59C95FE6FD84D403A443756BD753E403E86D8AA6ED84D4091D6732DB5753E4069DDABFB6CD84D40529731AAB1753E40FEE4396C6CD84D40181527ADAE753E4016CBE31F6CD84D40671A03A1AB753E4028DAB0016CD84D409D1F9095A9753E401098E2056CD84D40211E8997A7753E40BDC799266CD84D4064D1CF2FA5753E40BD23BE6E6CD84D4083AE3374A2753E40F26492EC6CD84D40 | way | 438780267 | 20 | {1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957} | {"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"} - 0102000020E61000000200000077C5E7A969763E409FAEEE586CD84D40E91A1CDB21763E40D872785270D84D40 | way | 750779153 | 4 | {1632220250,1632497615} | {"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D40C0B56EDE93763E40407331618FD84D40 | way | 750779155 | 5 | {1632497615,1195120146} | {"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408D6E7319ED753E40FA6184F068D84D40 | way | 750779156 | 5 | {1632497615,1621246419} | {"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D402E69D6636C763E407143424AA2D84D40 | way | 750779157 | 4 | {1632497615,1652587960} | {"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} - 0102000020E6100000030000005F251FBB0B763E409FA97C748FD84D40BC9179E40F763E403DB4345C89D84D40E91A1CDB21763E40D872785270D84D40 | way | 750779158 | 4 | {9159459639,1239612686,1632497615} | {"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E6100000150000009D1F9095A9753E401098E2056CD84D40BFE90203AD753E40580229B16BD84D40649291B3B0753E40463B133F6BD84D40691B7FA2B2753E4058EEBBD86AD84D406372B4F4B2753E40D50FA0956AD84D40D4410356B3753E40053818456AD84D40387705ECB4753E40D6FB32BD69D84D4078B6476FB8753E4083458F2969D84D408751103CBE753E405309AAA168D84D402BC65455C3753E40B387AC2468D84D40FA21DB9EC5753E40C53A55BE67D84D40D06EE305C7753E407284B12A67D84D40F949B54FC7753E40EF1B5F7B66D84D40948444DAC6753E40A23C98B965D84D40FBB1497EC4753E40970AE01C64D84D40B4F116FEC2753E407A81A32E63D84D40028F5EC3C2753E406EBF7CB262D84D40074C9649C3753E40C233A14962D84D4095B88E71C5753E40CE8536A561D84D40641415BBC7753E40F84C9B1661D84D40F89969B1CA753E40468EBE9360D84D40 | way | 988944864 | 2 | {9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340} | {"highway":"path","surface":"ground"} - 0102000020E61000000200000005B4BE92F5753E4030BDFDB968D84D40A91F8AB8EF753E40786FFBD467D84D40 | way | 988944880 | 3 | {9140576936,9140576937} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000090000002DDB3D2FCB753E40BB3CE7B864D84D401523A69FCB753E40CC79C6BE64D84D405C7347FFCB753E402C82FFAD64D84D407AE81615CC753E4067107A9164D84D404A0856D5CB753E40201CFD7964D84D4062C0ED64CB753E400EDF1D7464D84D401B704C05CB753E40AFD6E48464D84D40FDFA7CEFCA753E40DE8893A064D84D402DDB3D2FCB753E40BB3CE7B864D84D40 | way | 989184163 | 1 | {9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - 0102000020E6100000090000006D4ECA49CD753E40BB0ED59464D84D40559632BACD753E40388CDD9964D84D409DE6D319CE753E402C54ED8964D84D40BA5BA32FCE753E4067E2676D64D84D408B7BE2EFCD753E408B2E145564D84D4079B4CC7DCD753E400EB10B5064D84D405CE3D81FCD753E401AE9FB5F64D84D403E6E090ACD753E40DE5A817C64D84D406D4ECA49CD753E40BB0ED59464D84D40 | way | 989184166 | 1 | {9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - 0102000020E610000003000000DB04CE0825763E407B99CD8877D84D40244D727621763E40BD885BAA77D84D40E50D30F31D763E40BD885BAA77D84D40 | way | 989211851 | 4 | {1652605211,9143069529,9143069530} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E610000002000000547FCEEEDA753E404E976A0B74D84D409F34796FB1753E40ED6E545D76D84D40 | way | 989211857 | 12 | {8650331583,4260007752} | {"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"} - 0102000020E610000006000000E4E3C924D9753E40AB31D75878D84D407EB6C480DB753E40B819130775D84D40B3AFE18EDC753E40DC7F643A74D84D4053CF8250DE753E4036278AEB73D84D4028E84020E1753E40EE320DD473D84D4067F3380CE6753E40AD437FB273D84D40 | way | 989211858 | 1 | {9143069609,9143069608,9143069607,9143069606,9143069605,9143069604} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000005000000F83CDA931B763E409540EF3268D84D40EACA67791E763E4028F4554D6BD84D406D75392520763E4088FC8E3C6BD84D400C95DAE621763E4088FC8E3C6BD84D400C61904F23763E4017B776476BD84D40 | way | 989211859 | 1 | {9143093728,9143093727,9143093726,9143093725,9143093724} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000006000000DC2F9FAC18763E40C5F29D4E68D84D405DA626C11B763E4010E099756BD84D401129BCBA19763E40F3C6EEA76BD84D4071091BF917763E408DE7D8E66BD84D40D7A6B1BD16763E40048E041A6CD84D40DB79D10D03763E405B1A097E65D84D40 | way | 989211860 | 1 | {9143093729,9143093730,9143093731,9143093732,9143093734,9143093733} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E6100000120000004C9A50D20D763E40D8CE9C9A70D84D402F2581BC0D763E40619E3AFB6FD84D406A0F20E80D763E402025766D6FD84D40994B05700E763E40DFABB1DF6ED84D4081936DE00E763E40F15E5A796ED84D40CE44227E0F763E40278CC11E6ED84D40E50929E4EF753E40FA75F1C869D84D407AE3A430EF753E40FA75F1C869D84D40F70489EDEE753E405FDF3DF669D84D40FDC1C073EF753E40DB70B3D36AD84D40A91F8AB8EF753E407016E5886BD84D40E50929E4EF753E40D4939E8E6CD84D404A737511F0753E4081D7C2876DD84D40DF4CF15DEF753E4039F7B2486ED84D40A4969CC9ED753E40C7C5072C6FD84D40D53A1680EB753E40321A9E0370D84D4066BFEE74E7753E4049CCFD1F71D84D405858703FE0753E40D1A9D0E572D84D40 | way | 989211861 | 1 | {9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E61000001100000061360186E5753E40839E72F15CD84D4061360186E5753E40E12AAAD95ED84D40FCCCB458E5753E408D823BAB60D84D407FABD09BE5753E40F2FFF4B061D84D40CC5C8539E6753E405078BFC062D84D409CEC551AE7753E40BBCC559863D84D40002258B0E8753E40146E43D664D84D400B687D25EB753E40A827E26366D84D400A34338EEC753E40E92ADD5D67D84D40A4969CC9ED753E40B9E8BF6268D84D402D32F092EE753E40063E50B868D84D409167F228F0753E401EDC42FC68D84D40AA9619DB10763E409214A28D6DD84D4086E8103812763E40D44BE71E6DD84D405B35199F13763E405744A8AD6CD84D40902E36AD14763E40CE609D746CD84D400C1E4BC400763E402B20A3F265D84D40 | way | 989211862 | 1 | {9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000013000000AA9212CCE2753E40716193EB5CD84D40AA9212CCE2753E40A69C2FF65ED84D404529C69EE2753E407B455CA560D84D400FFC5EF9E2753E40452C62D861D84D407A22E3ACE3753E40F16F86D162D84D400EC81462E4753E40A98F769263D84D40497E69F6E5753E40023164D064D84D407D433C6DE8753E4096EA025E66D84D40539044D4E9753E40D7EDFD5767D84D40F3AFE595EB753E405309AAA168D84D408755174BEC753E40B28174B169D84D408D124FD1EC753E40293C0DBD6AD84D4057E5E72BED753E40D57F31B66BD84D40DAC3036FED753E40C8B7D2C66CD84D4057E5E72BED753E4009BBCDC06DD84D40DBF74D06EC753E40740F64986ED84D403BD8AC44EA753E40C7C5072C6FD84D40962F1E94E6753E40DE77674870D84D40E8A8FE9CDD753E40E35C797F72D84D40 | way | 989211863 | 1 | {9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E6100000020000004F7EE60709763E40E64647286CD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211868 | 4 | {9143093801,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E61000000200000070140FDE0D763E40F3846FAB6AD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211869 | 4 | {1632503177,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000040000004510E7E104763E40C677184971D84D40DA45877604763E407FE5F7EC6FD84D40456C0B2A05763E40A465EE6B6ED84D402C80290307763E406939D0436DD84D40 | way | 989211870 | 4 | {1632503179,9143093803,1632503181,9143093802} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E6100000040000004C27C8BE1A763E40289B728577D84D405951836918763E40A5EA686677D84D4096A3B6C315763E406AD2B71677D84D40CD80690712763E40D55A988576D84D40 | way | 989211871 | 4 | {1652605209,9143069531,1632503237,9143093806} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} - 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408682082758763E40ACE9D55B5ED84D40 | way | 991343632 | 2 | {1632497615,1518870652} | {"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"} - 0102000020E610000005000000EE2E06C545763E40804754A86ED84D40DF420D9535763E403895568D6FD84D406D2B07C435763E409D2CB5DE6FD84D40B51F84DB35763E40793C2D3F70D84D40D39453F135763E40678984A570D84D40 | way | 991343633 | 1 | {9159456550,9159456549,9159456545,9159456544,9159456543} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000005000000E871CE3E45763E40DA6443ED6DD84D40D985D50E35763E4092B245D26ED84D40FD474B8A34763E40F15E5A796ED84D40B09696EC33763E40278CC11E6ED84D40E006C60B33763E404B7C49BE6DD84D40 | way | 991343634 | 1 | {9159456552,9159456551,9159456548,9159456547,9159456546} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000002000000C305EADED4753E4022AAF06778D84D40CE93C6C3D6753E40FF97C68A75D84D40 | way | 991343661 | 1 | {9159459675,9159459674} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} - 0102000020E610000002000000339875B5CB753E407073CF5F8DD84D40E91A1CDB21763E40D872785270D84D40 | way | 1042527594 | 11 | {9140727237,1632497615} | {"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"} - 0103000020E610000001000000250000002F1114E40C763E40F03E7DBA70D84D40AC8E1CE90C763E40BB7372D06FD84D40C9BB348F0D763E40D9A6C2E96ED84D400A1B54D10E763E408694FA0D6ED84D409E3017A710763E406939D0436DD84D40E404B7FF12763E4093D222916CD84D403CA06CCA15763E40169DD1FB6BD84D40888D68F118763E40469737876BD84D4080D82D5D1C763E409F3E5D386BD84D40379089EF1F763E404C12F0106BD84D4065C0FE9023763E4076919D126BD84D401C785A2327763E4088FC8E3C6BD84D409745178A2A763E40ED93ED8D6BD84D403C365DAA2D763E40E71835046CD84D4017540A7030763E40228D0A9C6CD84D408DAC46C032763E40217365506DD84D4027C7F88B34763E40684D3D1C6ED84D406D2B07C435763E40501FDCF86ED84D40915D0E6036763E4032EC8BDF6FD84D4014E0055B36763E40FC766DCA70D84D40F6B2EDB435763E40DE431DB171D84D40B653CE7234763E403156E58C72D84D40223E0B9D32763E404EB10F5773D84D40DB696B4430763E402418BD0974D84D4084CEB5792D763E40A14D0E9F74D84D4038E1B9522A763E40DC93D11275D84D403F96F4E626763E4082ECAB6175D84D4089DE985423763E40D618198975D84D405BAE23B31F763E404159428875D84D40A4F6C7201C763E402FEE505E75D84D4029290BBA18763E40CA56F20C75D84D405AB9179815763E403B12D49574D84D40A91A18D412763E40955DD5FE73D84D4033C2DB8310763E4095777A4A73D84D4099A729B80E763E404E9DA27E72D84D4052431B800D763E4067CB03A271D84D402F1114E40C763E40F03E7DBA70D84D40 | way | 150294525 | 6 | | {"name":"Дубовое кольцо"} - 0103000020E6100000010000000E00000017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D40 | way | 426269715 | 5 | | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} - 0103000020E61000000100000009000000FDFA7CEFCA753E40DE8893A064D84D401B704C05CB753E40AFD6E48464D84D4062C0ED64CB753E400EDF1D7464D84D404A0856D5CB753E40201CFD7964D84D407AE81615CC753E4067107A9164D84D405C7347FFCB753E402C82FFAD64D84D401523A69FCB753E40CC79C6BE64D84D402DDB3D2FCB753E40BB3CE7B864D84D40FDFA7CEFCA753E40DE8893A064D84D40 | way | 989184163 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} - 0103000020E610000001000000090000003E6E090ACD753E40DE5A817C64D84D405CE3D81FCD753E401AE9FB5F64D84D4079B4CC7DCD753E400EB10B5064D84D408B7BE2EFCD753E408B2E145564D84D40BA5BA32FCE753E4067E2676D64D84D409DE6D319CE753E402C54ED8964D84D40559632BACD753E40388CDD9964D84D406D4ECA49CD753E40BB0ED59464D84D403E6E090ACD753E40DE5A817C64D84D40 | way | 989184166 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} -(111 rows) - ---Testcase 79: -DROP FOREIGN TABLE "♂"; ---Testcase 80: -DROP FOREIGN TABLE "♁ FDW"; ---Testcase 81: -DROP TABLE "♁"; ---Testcase 82: -DROP TABLE "♂"."テスト"; ---Testcase 83: -DROP SCHEMA "♂"; --- Test operators implemented in PostGIS 3.4.2, other are not tested --- SELECT testing group --- geometry -> geometry + bytea const -> geography -> geography + bytea const --- TC 100 -> TC 150 -> TC200 -> TC250 --- WHERE testing group --- geometry -> geometry + bytea const -> geography -> geography + bytea const --- TC 300 -> TC 350 -> TC400 -> TC450 ---Testcase 100: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @@ gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm @@ gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm && gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm && gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 102: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm << gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm << gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm >> gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm >> gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 104: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &< gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &< gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &> gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &> gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 106: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<| gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <<| gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 107: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |>> gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm |>> gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 108: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &<| gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &<| gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 109: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |&> gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm |&> gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 110: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~= gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm ~= gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 111: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm = gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm = gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 112: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &&& gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 113: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &&& gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 114: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |=| gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm |=| gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 115 -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <#> gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <#> gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 116: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<->> gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <<->> gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 117: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @ gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm @ gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 118: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~ gm1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm ~ gm1) - SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 150: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm @@ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 151: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 152: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 153: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm << '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 154: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm >> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 155: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 156: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &< '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 157: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 158: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 159: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm |>> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 160: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm |&> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm ~= '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm &&& '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm |=| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <#> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ----------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm <<->> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm @ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 170: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gm ~ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) - SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" -(3 rows) - ---Testcase 200: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <-> gg1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gg <-> gg1) - SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 201: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg && gg1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gg && gg1) - SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 202: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <> gg1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gg)::bytea <> (gg1)::bytea) - SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 203: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg = gg1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gg = gg1) - SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 204 -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg != gg1 g FROM "types_PostGIS"; - QUERY PLAN -------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gg)::bytea <> (gg1)::bytea) - SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" -(3 rows) - ---Testcase 250: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gg <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) - SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" -(3 rows) - ---Testcase 251: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN --------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, (gg && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) - SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" -(3 rows) - ---Testcase 252: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) - SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" -(3 rows) - ---Testcase 253: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - QUERY PLAN ---------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: i, ((gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) - SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" -(3 rows) - ---Testcase 300: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm @@ "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 301: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm && "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 302: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm << "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 303: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm >> "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 304: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &< "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 305: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &> "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 306: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <<| "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 307: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm |>> "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 308: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &<| "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 309: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm |&> "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 310: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm ~= "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 311: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm = gm1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" WHERE (((`gm` = `gm1`) IS NOT NULL)) -(3 rows) - ---Testcase 312: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &&& "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 313: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm |=| "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 314: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> gm1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <#> "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 315: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> gm1 IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <<->> "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 316: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ gm1 IS NOT NULL; - QUERY PLAN --------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm @ "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 317: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ gm1 IS NOT NULL; - QUERY PLAN --------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm ~ "types_PostGIS".gm1) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 350: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm @@ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 351: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 352: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 353: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm << '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 354: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm >> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 355: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: ((("types_PostGIS".gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 356: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &< '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 357: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 358: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 359: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm |>> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 360: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: ((("types_PostGIS".gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 361: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 362: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm |&> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 363: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm ~= '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 364: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: ((("types_PostGIS".gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 365: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm &&& '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 366: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm |=| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 367: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <#> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 368: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm <<->> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 369: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm @ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 370: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gm, gm1 - Filter: (("types_PostGIS".gm ~ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) - SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 400: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> gg1 IS NOT NULL; - QUERY PLAN ----------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: (("types_PostGIS".gg <-> "types_PostGIS".gg1) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 401: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && gg1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: (("types_PostGIS".gg && "types_PostGIS".gg1) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 402: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: ((("types_PostGIS".gg)::bytea <> ("types_PostGIS".gg1)::bytea) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 403: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: ((("types_PostGIS".gg)::bytea <> ("types_PostGIS".gg1)::bytea) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 404: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg = gg1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" WHERE (((`gg` = `gg1`) IS NOT NULL)) -(3 rows) - ---Testcase 405: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != gg1 IS NOT NULL; - QUERY PLAN ---------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: ((("types_PostGIS".gg)::bytea <> ("types_PostGIS".gg1)::bytea) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 450: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: (("types_PostGIS".gg <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 451: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------ - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: (("types_PostGIS".gg && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 452: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: ((("types_PostGIS".gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 453: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: ((("types_PostGIS".gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 454: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- - Foreign Scan on public."types_PostGIS" - Output: gg, gg1 - Filter: ((("types_PostGIS".gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) - SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" -(4 rows) - ---Testcase 500: -DROP FOREIGN TABLE "types_PostGIS"; ---Testcase 501: -DROP EXTENSION sqlite_fdw CASCADE; -NOTICE: drop cascades to server sqlite_svr ---Testcase 502: -DROP EXTENSION postgis CASCADE; -NOTICE: drop cascades to 2 other objects -DETAIL: drop cascades to extension postgis_raster -drop cascades to extension postgis_topology diff --git a/expected/17.0/types/uuid.out b/expected/17.0/types/uuid.out new file mode 100644 index 00000000..2ccbb635 --- /dev/null +++ b/expected/17.0/types/uuid.out @@ -0,0 +1,548 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 001: +CREATE EXTENSION sqlite_fdw; +--Testcase 002: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 009: +CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); +--Testcase 010: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE text; +--Testcase 011: +INSERT INTO "type_UUID" ("i", "u") VALUES (1, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 012: +INSERT INTO "type_UUID" ("i", "u") VALUES (2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 013: +INSERT INTO "type_UUID" ("i", "u") VALUES (3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 014: +INSERT INTO "type_UUID" ("i", "u") VALUES (4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 015: +INSERT INTO "type_UUID" ("i", "u") VALUES (5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 016: +INSERT INTO "type_UUID" ("i", "u") VALUES (6, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 017: +INSERT INTO "type_UUID" ("i", "u") VALUES (7, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 018: +INSERT INTO "type_UUID" ("i", "u") VALUES (8, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 019: +INSERT INTO "type_UUID" ("i", "u") VALUES (9, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 020: +INSERT INTO "type_UUID" ("i", "u") VALUES (10, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 021: +INSERT INTO "type_UUID" ("i", "u") VALUES (11, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 022: +INSERT INTO "type_UUID" ("i", "u") VALUES (12, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 023: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 024: +INSERT INTO "type_UUID" ("i", "u") VALUES (13, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 025: +INSERT INTO "type_UUID" ("i", "u") VALUES (14, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 026: +INSERT INTO "type_UUID" ("i", "u") VALUES (15, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11', 'hex')); +--Testcase 027: +INSERT INTO "type_UUID" ("i", "u") VALUES (16, decode('b0eebc999c0b4ef8bb6d6bb9bd380a12', 'hex')); +--Testcase 028: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 029: +INSERT INTO "type_UUID" ("i", "u") VALUES (17, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 030: +INSERT INTO "type_UUID" ("i", "u") VALUES (18, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 031: +INSERT INTO "type_UUID" ("i", "u") VALUES (19, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 032: +INSERT INTO "type_UUID" ("i", "u") VALUES (20, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 033: +INSERT INTO "type_UUID" ("i", "u") VALUES (21, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 034: +INSERT INTO "type_UUID" ("i", "u") VALUES (22, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 035: +INSERT INTO "type_UUID" ("i", "u") VALUES (23, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 036: +INSERT INTO "type_UUID" ("i", "u") VALUES (24, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 037: +INSERT INTO "type_UUID" ("i", "u") VALUES (25, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 038: +INSERT INTO "type_UUID" ("i", "u") VALUES (26, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 039: +INSERT INTO "type_UUID" ("i", "u") VALUES (27, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 040: +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 041: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (28, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 28, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 042: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (ADD column_type 'BLOB'); +--Testcase 043: +INSERT INTO "type_UUID" ("i", "u") VALUES (29, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'); +--Testcase 044: +INSERT INTO "type_UUID" ("i", "u") VALUES (30, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); +--Testcase 045: +INSERT INTO "type_UUID" ("i", "u") VALUES (31, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); +--Testcase 046: +INSERT INTO "type_UUID" ("i", "u") VALUES (32, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); +--Testcase 047: +INSERT INTO "type_UUID" ("i", "u") VALUES (33, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); +--Testcase 048: +INSERT INTO "type_UUID" ("i", "u") VALUES (34, '{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 049: +INSERT INTO "type_UUID" ("i", "u") VALUES (35, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'); +--Testcase 050: +INSERT INTO "type_UUID" ("i", "u") VALUES (36, 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'); +--Testcase 051: +INSERT INTO "type_UUID" ("i", "u") VALUES (37, '{b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12}'); +--Testcase 052: +INSERT INTO "type_UUID" ("i", "u") VALUES (38, 'b0eebc999c0b4ef8bb6d6bb9bd380a12'); +--Testcase 053: +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); +--Testcase 054: +INSERT INTO "type_UUID" ("i", "u") VALUES (40, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 055: +EXPLAIN (VERBOSE, COSTS OFF) +INSERT INTO "type_UUID" ("i", "u") VALUES (39, 'b0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a12'); + QUERY PLAN +------------------------------------------------------------------ + Insert on public."type_UUID" + Batch Size: 1 + -> Result + Output: 39, 'b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12'::uuid +(4 rows) + +--Testcase 056: +CREATE FOREIGN TABLE "type_UUID+"( "i" int OPTIONS (key 'true'), "u" uuid, "t" text, "l" smallint) SERVER sqlite_svr OPTIONS (table 'type_UUID+'); +--Testcase 057: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(40 rows) + +--Testcase 058: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 059: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 060: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 061: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 062: +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(20 rows) + +--Testcase 063: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" where "u" = 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'a0eebc999c0b4ef8bb6d6bb9bd380a11')) +(3 rows) + +--Testcase 064: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 065: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 066: +SELECT * FROM "type_UUID+" where "u" = 'B0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A12'; + i | u | t | l +----+--------------------------------------+------+---- + 7 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 8 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 9 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 38 + 10 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 37 + 11 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 32 + 12 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 39 + 14 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 16 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 23 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 24 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 26 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 27 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 28 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | text | 36 + 35 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 36 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 37 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 38 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 39 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 + 40 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 | blob | 16 +(20 rows) + +--Testcase 067: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; +--Testcase 068: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((`i` = 25)) +(3 rows) + +--Testcase 069: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 070: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "i" = 25; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb9bd380a15') WHERE ((`i` = 25)) +(3 rows) + +--Testcase 071: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 072: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; +--Testcase 073: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a12'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a12')) +(3 rows) + +--Testcase 074: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 38 + 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 32 + 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 39 + 6 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 37 + 13 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 15 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 17 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 18 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 19 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 20 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 21 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 22 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | text | 36 + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 + 29 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 30 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 31 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 32 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 33 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 + 34 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 | blob | 16 +(21 rows) + +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11'; +--Testcase 076: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 25 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | blob | 16 +(1 row) + +--Testcase 077: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'TEXT'); +--Testcase 075: +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; +--Testcase 076: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "u" = 'b0eebc999c0b4ef8bb6d6bb9bd380a15'; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------ + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 077: +SELECT * FROM "type_UUID+"; + i | u | t | l +---+---+---+--- +(0 rows) + +--Testcase 078: +INSERT INTO "type_UUID" ("i", "u") VALUES (41, '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'); +--Testcase 079: +SELECT * FROM "type_UUID+" WHERE "i" = 41; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 | text | 36 +(1 row) + +--Testcase 080: +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; +--Testcase 081: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}'; + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = sqlite_fdw_uuid_str(X'b0eebc999c0b4ef8bb6d6bb900000a15') WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb9bd380a15')) +(3 rows) + +--Testcase 082: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 083: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" OPTIONS (SET column_type 'BLOB'); +--Testcase 084: +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE "type_UUID" SET "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a15}' WHERE "u" = '{b0eebc99-9c0b4ef8-bb6d6bb9-00000a15}'; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Update on public."type_UUID" + -> Foreign Update on public."type_UUID" + SQLite query: UPDATE main."type_UUID" SET `u` = X'b0eebc999c0b4ef8bb6d6bb9bd380a15' WHERE ((sqlite_fdw_uuid_blob(`u`) = X'b0eebc999c0b4ef8bb6d6bb900000a15')) +(3 rows) + +--Testcase 085: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE bytea; +--Testcase 086: +INSERT INTO "type_UUID" ("i", "u") VALUES (42, decode('a0eebc999c0b4ef8bb6d6bb9bd380a11f1', 'hex')); +--Testcase 087: +INSERT INTO "type_UUID" ("i", "u") VALUES (43, decode('b0eebc999c0b4ef8bb6d6bb9bd380a', 'hex')); +--Testcase 088: +ALTER FOREIGN TABLE "type_UUID" ALTER COLUMN "u" TYPE uuid; +--Testcase 089: +SELECT * FROM "type_UUID+" WHERE "i" = 42; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (17 bytes) in hex : a0eebc999c0b4ef8bb6d6bb9bd380a11f1 +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 090: +SELECT * FROM "type_UUID+" WHERE "i" = 43; +ERROR: PostgreSQL uuid data type allows only 16 bytes SQLite blob value +HINT: SQLite value with "blob" affinity (15 bytes) in hex : b0eebc999c0b4ef8bb6d6bb9bd380a +CONTEXT: foreign table "type_UUID+" foreign column "u" have data type "uuid" (usual affinity "blob"), in query there is reference to foreign column +--Testcase 091: +EXPLAIN (VERBOSE, COSTS OFF) +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); + QUERY PLAN +---------------------------------------------------------------------------- + Delete on public."type_UUID" + -> Foreign Delete on public."type_UUID" + SQLite query: DELETE FROM main."type_UUID" WHERE (`i` IN (42, 43)) +(3 rows) + +--Testcase 092: +DELETE FROM "type_UUID" WHERE "i" IN (42, 43); +--Testcase 093: +INSERT INTO "type_UUID" ("i", "u") VALUES (44, NULL); +--Testcase 094: +SELECT * FROM "type_UUID+"; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 + 44 | | null | +(2 rows) + +--Testcase 095: +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + i | u | t | l +----+---+------+--- + 44 | | null | +(1 row) + +--Testcase 096: +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + i | u | t | l +----+--------------------------------------+------+---- + 41 | b0eebc99-9c0b-4ef8-bb6d-6bb900000a15 | text | 36 +(1 row) + +--Testcase 097: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NULL)) +(3 rows) + +--Testcase 098: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT * FROM "type_UUID+" WHERE "u" IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."type_UUID+" + Output: i, u, t, l + SQLite query: SELECT `i`, sqlite_fdw_uuid_blob(`u`), `t`, `l` FROM main."type_UUID+" WHERE ((sqlite_fdw_uuid_blob(`u`) IS NOT NULL)) +(3 rows) + +--Testcase 100: +CREATE FOREIGN TABLE "type_UUIDpk" (col uuid OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 101: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (ADD column_type 'TEXT'); +--Testcase 102: +INSERT INTO "type_UUIDpk" VALUES ('{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}'); +--Testcase 103: +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 104: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(2 rows) + +--Testcase 105: ERR - primary key +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_UUIDpk.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_UUIDpk"(`col`) VALUES (?) +--Testcase 106: +ALTER FOREIGN TABLE "type_UUIDpk" ALTER COLUMN col OPTIONS (SET column_type 'BLOB'); +--Testcase 107: NO ERR, but the same semantics! +INSERT INTO "type_UUIDpk" VALUES ('{b0eebc99-9c0b4ef8-bb6d6bb9-bd380a12}'); +--Testcase 108: +SELECT * FROM "type_UUIDpk"; + col +-------------------------------------- + a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 + b0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12 +(3 rows) + +--Testcase 109: +DELETE FROM "type_UUIDpk"; +--Testcase 200: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to server sqlite_svr +drop cascades to foreign table "type_UUID" +drop cascades to foreign table "type_UUID+" +drop cascades to foreign table "type_UUIDpk" diff --git a/expected/17.0/with_gis_support/auto_import.out b/expected/17.0/with_gis_support/auto_import.out new file mode 100644 index 00000000..4c399770 --- /dev/null +++ b/expected/17.0/with_gis_support/auto_import.out @@ -0,0 +1,636 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/with_gis_support/postgis.out b/expected/17.0/with_gis_support/postgis.out new file mode 100644 index 00000000..6ce3d2b7 --- /dev/null +++ b/expected/17.0/with_gis_support/postgis.out @@ -0,0 +1,1747 @@ +--Testcase 2: +CREATE EXTENSION sqlite_fdw; +--Testcase 3: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 4: +CREATE EXTENSION IF NOT EXISTS postgis; +NOTICE: extension "postgis" already exists, skipping +--Testcase 5: +CREATE EXTENSION postgis_raster; +--Testcase 6: +CREATE EXTENSION postgis_topology; +-- TEST GIS DATA FROM UNION ASTRONOMIQUE INTERNATIONAL (国際天文学連合): MARS, Olympus mons +--Testcase 11: +CREATE SCHEMA "♂"; +--Testcase 12: +CREATE TABLE "♂"."テスト" ( + id int4 NULL, + "UAI" varchar(254) NULL, + "⌖" public.geometry(point, 104904) NULL, + geom public.geometry(geometry, 104904) NULL, + "t₀" date NULL, + "class" text NULL, + "URL" varchar(80) NULL +); +--Testcase 13: ETC... +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(991, 'Olympus Mons', 'SRID=104904;POINT (226.19749330952843 18.652758890345698)'::geometry, 'SRID=104904;MULTIPOLYGON (((223.78717231750488 23.3314151763916, 224.22803688049316 23.324007034301758, 224.32436180114746 23.5648136138916, 224.7186985015869 23.593564987182617, 224.79486274719238 23.45737648010254, 225.06530570983887 23.238798141479492, 225.67255210876465 23.437196731567383, 226.2211856842041 23.6611385345459, 226.5472011566162 23.65372657775879, 227.6215763092041 23.435148239135742, 228.19009590148926 23.390283584594727, 228.753023147583 23.24955177307129, 228.90711784362793 23.1943416595459, 229.23219108581543 23.004926681518555, 229.5288143157959 22.75514030456543, 229.87227058410645 22.442903518676758, 230.2469539642334 22.14628028869629, 230.7309169769287 21.927717208862305, 231.30854988098145 21.64670753479004, 231.85495948791504 21.084684371948242, 232.19841957092285 19.88258171081543, 231.88618278503418 18.47752571105957, 231.30854988098145 17.743772506713867, 231.21887397766113 17.218599319458008, 231.17812156677246 16.751802444458008, 230.97346687316895 16.353670120239258, 230.8327350616455 15.947111129760742, 230.62945365905762 15.478002548217773, 230.4574489593506 15.352907180786133, 230.20748329162598 15.29954719543457, 229.99631309509277 15.036508560180664, 229.72586631774902 14.640104293823242, 229.41096305847168 14.377065658569336, 228.98862266540527 14.10291862487793, 228.74040412902832 13.854700088500977, 228.5107135772705 13.83247184753418, 228.31806755065918 13.962137222290039, 227.93990516662598 13.929948806762695, 227.36133766174316 13.883039474487305, 227.04734230041504 13.813947677612305, 226.68895149230957 13.851762771606445, 226.4101276397705 13.839879989624023, 226.06347465515137 13.632848739624023, 225.7766170501709 13.617597579956055, 225.32925987243652 13.481771469116211, 224.76723670959473 13.591054916381836, 224.15838050842285 13.731557846069336, 223.12800407409668 14.106241226196289, 222.39425468444824 14.402864456176758, 221.67611503601074 14.918050765991211, 221.434663772583 15.403280258178711, 221.30129432678223 16.051607131958008, 221.0864200592041 16.410966873168945, 221.09012413024902 16.6591854095459, 221.1975612640381 17.09263801574707, 220.9971103668213 17.32316017150879, 220.75670051574707 17.422361373901367, 220.82338523864746 17.844701766967773, 221.18475532531738 18.073732376098633, 221.3567600250244 18.5584774017334, 221.40367317199707 19.10576820373535, 221.3567600250244 19.90325355529785, 221.42725563049316 20.59361457824707, 221.778959274292 21.40439796447754, 222.34188652038574 22.201879501342773, 223.01658821105957 23.272138595581055, 223.3759479522705 23.668546676635742, 223.3722438812256 23.675954818725586, 223.57600212097168 23.675954818725586, 223.70566749572754 23.542585372924805, 223.78717231750488 23.3314151763916)))'::geometry, '1973-01-01', 'mo', 'http://planetarynames.wr.usgs.gov/Feature/4453'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(248, 'Karzok', 'SRID=104904;POINT (228.262902951161 18.4035270924109)'::geometry, 'SRID=104904;MULTIPOLYGON (((228.269330978394 18.2748584747314, 228.266962051392 18.2748394012451, 228.264589309692 18.2748584747314, 228.26222038269 18.2749156951904, 228.259851455688 18.2750148773193, 228.257482528687 18.2751522064209, 228.255121231079 18.2753276824951, 228.252759933472 18.2755451202393, 228.250402450562 18.2757968902588, 228.248052597046 18.2760906219482, 228.245706558228 18.2764263153076, 228.243368148804 18.2767963409424, 228.241037368774 18.2772083282471, 228.23871421814 18.2776546478271, 228.236398696899 18.2781429290771, 228.234094619751 18.2786655426025, 228.231798171997 18.2792301177979, 228.229513168335 18.2798328399658, 228.227239608765 18.2804698944092, 228.224977493286 18.2811489105225, 228.222726821899 18.2818622589111, 228.220491409302 18.2826137542725, 228.218271255493 18.2833995819092, 228.216066360474 18.2842235565186, 228.213872909546 18.2850856781006, 228.211698532104 18.285982131958, 228.209539413452 18.2869167327881, 228.207399368286 18.2878856658936, 228.205278396606 18.2888889312744, 228.203172683716 18.2899265289307, 228.201089859009 18.2910022735596, 228.199026107788 18.2921085357666, 228.196981430054 18.2932529449463, 228.194959640503 18.2944278717041, 228.192956924438 18.2956371307373, 228.190980911255 18.2968769073486, 228.189023971558 18.2981548309326, 228.187093734741 18.2994594573975, 228.185186386108 18.3007984161377, 228.183305740356 18.3021678924561, 228.181447982788 18.3035678863525, 228.179616928101 18.3050022125244, 228.177812576294 18.3064632415771, 228.176038742065 18.307954788208, 228.174287796021 18.3094730377197, 228.172567367554 18.3110218048096, 228.170873641968 18.3126010894775, 228.16921043396 18.3142032623291, 228.16757774353 18.3158359527588, 228.165975570679 18.3174953460693, 228.164403915405 18.3191814422607, 228.162858963013 18.320894241333, 228.161352157593 18.3226299285889, 228.159872055054 18.3243923187256, 228.158430099487 18.3261775970459, 228.157014846802 18.3279857635498, 228.155637741089 18.3298168182373, 228.154294967651 18.3316707611084, 228.152982711792 18.3335475921631, 228.151708602905 18.3354473114014, 228.150468826294 18.337366104126, 228.149263381958 18.3393039703369, 228.148092269897 18.3412647247314, 228.14695930481 18.343240737915, 228.145864486694 18.3452396392822, 228.144804000854 18.3472537994385, 228.143781661987 18.3492832183838, 228.142793655396 18.3513317108154, 228.141847610474 18.3533954620361, 228.140939712524 18.3554744720459, 228.140066146851 18.3575687408447, 228.139234542847 18.3596782684326, 228.138441085815 18.3617992401123, 228.137685775757 18.3639354705811, 228.136972427368 18.3660831451416, 228.136297225952 18.3682422637939, 228.135660171509 18.3704090118408, 228.135065078735 18.3725872039795, 228.134511947632 18.37477684021, 228.133996963501 18.376974105835, 228.133520126343 18.3791828155518, 228.133085250854 18.3813953399658, 228.132692337036 18.3836154937744, 228.132341384888 18.3858432769775, 228.132028579712 18.3880748748779, 228.131757736206 18.3903102874756, 228.13152885437 18.3925533294678, 228.131341934204 18.39479637146, 228.131196975708 18.3970432281494, 228.131090164185 18.3992938995361, 228.131025314331 18.4015445709229, 228.131002426147 18.4037952423096, 228.131021499634 18.4060459136963, 228.13108253479 18.408296585083, 228.131185531616 18.4105472564697, 228.131326675415 18.4127941131592, 228.131513595581 18.4150371551514, 228.13173866272 18.4172801971436, 228.132005691528 18.4195156097412, 228.132314682007 18.4217510223389, 228.132661819458 18.4239749908447, 228.133054733276 18.4261989593506, 228.13348197937 18.4284114837646, 228.133955001831 18.4306163787842, 228.134466171265 18.4328174591064, 228.135019302368 18.4350070953369, 228.135610580444 18.4371852874756, 228.13624382019 18.4393558502197, 228.136919021606 18.4415149688721, 228.137628555298 18.4436626434326, 228.138380050659 18.4457988739014, 228.13917350769 18.4479236602783, 228.140001296997 18.4500331878662, 228.140871047974 18.452127456665, 228.141775131226 18.4542064666748, 228.142721176147 18.4562740325928, 228.143705368042 18.4583225250244, 228.144723892212 18.460355758667, 228.145784378052 18.4623699188232, 228.146879196167 18.4643688201904, 228.148008346558 18.4663486480713, 228.149175643921 18.4683094024658, 228.150381088257 18.4702472686768, 228.151620864868 18.4721698760986, 228.152894973755 18.4740695953369, 228.154203414917 18.4759464263916, 228.155546188354 18.47780418396, 228.156923294067 18.4796352386475, 228.158334732056 18.4814472198486, 228.159776687622 18.4832363128662, 228.161256790161 18.4849987030029, 228.162763595581 18.4867343902588, 228.164304733276 18.4884471893311, 228.16587638855 18.4901371002197, 228.167478561401 18.4917964935303, 228.169115066528 18.49342918396, 228.170778274536 18.4950351715088, 228.172468185425 18.4966144561768, 228.174192428589 18.4981670379639, 228.175939559937 18.4996891021729, 228.177717208862 18.5011806488037, 228.179521560669 18.5026454925537, 228.181352615356 18.5040760040283, 228.183210372925 18.5054798126221, 228.185094833374 18.5068492889404, 228.187002182007 18.5081920623779, 228.188936233521 18.50950050354, 228.190893173218 18.5107746124268, 228.192869186401 18.5120182037354, 228.194871902466 18.5132274627686, 228.196897506714 18.5144062042236, 228.198942184448 18.5155506134033, 228.201009750366 18.5166568756104, 228.203096389771 18.5177326202393, 228.205202102661 18.5187740325928, 228.207326889038 18.5197811126709, 228.209466934204 18.5207500457764, 228.211629867554 18.5216846466064, 228.213804244995 18.5225811004639, 228.21600151062 18.5234432220459, 228.218210220337 18.5242710113525, 228.220434188843 18.5250568389893, 228.22266960144 18.5258121490479, 228.224924087524 18.5265254974365, 228.227186203003 18.5272045135498, 228.229463577271 18.5278415679932, 228.23175239563 18.5284442901611, 228.234052658081 18.5290088653564, 228.236360549927 18.5295352935791, 228.238679885864 18.5300235748291, 228.241006851196 18.5304698944092, 228.243341445923 18.5308818817139, 228.245683670044 18.5312557220459, 228.248029708862 18.531587600708, 228.250383377075 18.5318813323975, 228.252744674683 18.5321369171143, 228.255109786987 18.5323505401611, 228.257474899292 18.5325298309326, 228.259847640991 18.5326671600342, 228.262216567993 18.5327663421631, 228.26459312439 18.5328235626221, 228.266965866089 18.5328426361084, 228.269342422485 18.5328235626221, 228.271715164185 18.5327625274658, 228.274087905884 18.5326671600342, 228.276456832886 18.5325298309326, 228.278825759888 18.5323505401611, 228.281187057495 18.5321369171143, 228.283548355103 18.5318813323975, 228.285902023315 18.531587600708, 228.288251876831 18.5312519073486, 228.290594100952 18.5308818817139, 228.292928695679 18.5304698944092, 228.295255661011 18.5300197601318, 228.297574996948 18.5295352935791, 228.299882888794 18.5290088653564, 228.302179336548 18.5284442901611, 228.304468154907 18.5278415679932, 228.306745529175 18.5272006988525, 228.309011459351 18.5265254974365, 228.311262130737 18.5258083343506, 228.313501358032 18.5250568389893, 228.315725326538 18.5242671966553, 228.317934036255 18.5234432220459, 228.320127487183 18.5225811004639, 228.322305679321 18.5216808319092, 228.324464797974 18.5207462310791, 228.326608657837 18.5197772979736, 228.328733444214 18.5187702178955, 228.330839157104 18.5177326202393, 228.332925796509 18.5166568756104, 228.334989547729 18.5155467987061, 228.337034225464 18.5144023895264, 228.339059829712 18.5132274627686, 228.341062545776 18.5120143890381, 228.343042373657 18.5107707977295, 228.344995498657 18.5094966888428, 228.346929550171 18.5081882476807, 228.348836898804 18.5068454742432, 228.350721359253 18.5054759979248, 228.352579116821 18.5040721893311, 228.354410171509 18.5026416778564, 228.356214523315 18.5011768341064, 228.357992172241 18.4996852874756, 228.359739303589 18.4981632232666, 228.361463546753 18.4966106414795, 228.363153457642 18.4950313568115, 228.364816665649 18.4934253692627, 228.366449356079 18.491792678833, 228.368055343628 18.4901294708252, 228.369626998901 18.4884433746338, 228.371168136597 18.4867305755615, 228.372674942017 18.4849910736084, 228.374151229858 18.4832286834717, 228.375597000122 18.4814434051514, 228.37700843811 18.4796314239502, 228.378385543823 18.4778003692627, 228.379728317261 18.4759426116943, 228.381036758423 18.4740619659424, 228.38231086731 18.4721660614014, 228.383550643921 18.4702434539795, 228.38475227356 18.4683017730713, 228.385919570923 18.4663410186768, 228.387052536011 18.4643650054932, 228.388147354126 18.462366104126, 228.389204025269 18.4603481292725, 228.390226364136 18.4583187103271, 228.391206741333 18.4562664031982, 228.392152786255 18.4542026519775, 228.393060684204 18.4521198272705, 228.393926620483 18.4500255584717, 228.394758224487 18.4479160308838, 228.395547866821 18.4457950592041, 228.396299362183 18.4436588287354, 228.397012710571 18.4415111541748, 228.39768409729 18.4393520355225, 228.398317337036 18.4371814727783, 228.398908615112 18.4349994659424, 228.399461746216 18.4328098297119, 228.399972915649 18.4306125640869, 228.40044593811 18.4284076690674, 228.400876998901 18.4261913299561, 228.401266098022 18.4239711761475, 228.401613235474 18.4217433929443, 228.401922225952 18.4195117950439, 228.402189254761 18.417272567749, 228.402414321899 18.4150333404541, 228.402597427368 18.4127864837646, 228.402742385864 18.4105396270752, 228.40284538269 18.4082927703857, 228.402902603149 18.406042098999, 228.402921676636 18.403787612915, 228.402898788452 18.4015369415283, 228.402837753296 18.3992862701416, 228.402730941772 18.3970394134521, 228.402585983276 18.3947887420654, 228.402395248413 18.3925457000732, 228.402166366577 18.3903064727783, 228.401895523071 18.3880672454834, 228.401586532593 18.385835647583, 228.401231765747 18.3836116790771, 228.400838851929 18.3813877105713, 228.40040397644 18.3791751861572, 228.399930953979 18.3769702911377, 228.399415969849 18.3747730255127, 228.398859024048 18.3725833892822, 228.398263931274 18.3704051971436, 228.397626876831 18.3682346343994, 228.396951675415 18.3660755157471, 228.396238327026 18.3639316558838, 228.395483016968 18.361795425415, 228.394689559937 18.3596744537354, 228.393857955933 18.3575649261475, 228.392988204956 18.3554706573486, 228.39207649231 18.3533916473389, 228.391130447388 18.3513278961182, 228.390146255493 18.3492794036865, 228.389120101929 18.3472461700439, 228.388063430786 18.3452320098877, 228.386964797974 18.3432369232178, 228.385831832886 18.3412609100342, 228.384660720825 18.3393001556396, 228.383455276489 18.3373622894287, 228.382215499878 18.3354434967041, 228.380941390991 18.3335437774658, 228.379629135132 18.3316669464111, 228.378286361694 18.32981300354, 228.376905441284 18.3279819488525, 228.375494003296 18.3261699676514, 228.374048233032 18.3243846893311, 228.37257194519 18.3226261138916, 228.371061325073 18.3208866119385, 228.369520187378 18.3191776275635, 228.367948532104 18.3174915313721, 228.366346359253 18.3158321380615, 228.364709854126 18.3141994476318, 228.363046646118 18.3125972747803, 228.361356735229 18.3110179901123, 228.359636306763 18.3094692230225, 228.357885360718 18.3079509735107, 228.356107711792 18.3064594268799, 228.354303359985 18.3049983978271, 228.352472305298 18.3035640716553, 228.350618362427 18.3021640777588, 228.348733901978 18.3007946014404, 228.346826553345 18.2994556427002, 228.344896316528 18.2981510162354, 228.342943191528 18.2968769073486, 228.340963363647 18.29563331604, 228.33896446228 18.2944240570068, 228.336938858032 18.293249130249, 228.334897994995 18.2921085357666, 228.332830429077 18.2909984588623, 228.33074760437 18.2899265289307, 228.328645706177 18.2888851165771, 228.3265209198 18.2878818511963, 228.324380874634 18.2869129180908, 228.322221755981 18.285982131958, 228.32004737854 18.2850856781006, 228.31785774231 18.2842235565186, 228.315649032593 18.2833995819092, 228.313428878784 18.2826099395752, 228.311193466187 18.2818584442139, 228.3089427948 18.2811450958252, 228.306684494019 18.2804698944092, 228.304410934448 18.2798290252686, 228.302125930786 18.2792301177979, 228.299829483032 18.2786655426025, 228.297521591187 18.2781391143799, 228.295206069946 18.2776546478271, 228.292882919312 18.2772045135498, 228.290552139282 18.2767963409424, 228.288213729858 18.2764225006104, 228.28586769104 18.2760906219482, 228.283517837524 18.2757968902588, 228.281160354614 18.2755451202393, 228.278802871704 18.2753276824951, 228.276437759399 18.2751522064209, 228.274072647095 18.2750148773193, 228.271703720093 18.2749156951904, 228.269330978394 18.2748584747314)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14144'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(249, 'Pangboche', 'SRID=104904;POINT (226.595873773026 17.2783598670807)'::geometry, 'SRID=104904;MULTIPOLYGON (((226.601442337036 17.1929302215576, 226.599878311157 17.1929187774658, 226.598310470581 17.1929302215576, 226.596746444702 17.1929721832275, 226.595178604126 17.1930370330811, 226.593618392944 17.1931285858154, 226.592054367065 17.1932430267334, 226.590497970581 17.1933879852295, 226.588941574097 17.1935558319092, 226.587385177612 17.193754196167, 226.585836410522 17.1939754486084, 226.58429145813 17.1942195892334, 226.582754135132 17.1944942474365, 226.581216812134 17.1947917938232, 226.57968711853 17.1951160430908, 226.578165054321 17.195463180542, 226.576650619507 17.195837020874, 226.57513999939 17.1962375640869, 226.573637008667 17.1966648101807, 226.572145462036 17.197114944458, 226.570657730103 17.1975879669189, 226.569181442261 17.1980876922607, 226.567712783813 17.1986103057861, 226.566255569458 17.1991596221924, 226.564809799194 17.1997318267822, 226.563371658325 17.2003269195557, 226.561948776245 17.20094871521, 226.56053352356 17.2015933990479, 226.559129714966 17.2022609710693, 226.557741165161 17.2029514312744, 226.556364059448 17.2036647796631, 226.555002212524 17.2044010162354, 226.553651809692 17.2051601409912, 226.552316665649 17.2059421539307, 226.550992965698 17.2067432403564, 226.549688339233 17.2075710296631, 226.54839515686 17.2084178924561, 226.547121047974 17.2092876434326, 226.545862197876 17.2101764678955, 226.544618606567 17.211088180542, 226.543394088745 17.2120189666748, 226.542184829712 17.2129688262939, 226.540990829468 17.2139415740967, 226.539819717407 17.2149333953857, 226.538663864136 17.2159404754639, 226.537527084351 17.2169704437256, 226.536409378052 17.2180194854736, 226.535310745239 17.219087600708, 226.534231185913 17.2201709747314, 226.533174514771 17.2212734222412, 226.532133102417 17.2223949432373, 226.531118392944 17.2235317230225, 226.530118942261 17.2246875762939, 226.529146194458 17.2258586883545, 226.528188705444 17.2270450592041, 226.527257919312 17.2282466888428, 226.526346206665 17.2294635772705, 226.525461196899 17.2306995391846, 226.52459526062 17.2319469451904, 226.523752212524 17.2332057952881, 226.522932052612 17.2344837188721, 226.522138595581 17.2357730865479, 226.521364212036 17.2370738983154, 226.520616531372 17.2383899688721, 226.519891738892 17.2397136688232, 226.519193649292 17.2410526275635, 226.518518447876 17.2424030303955, 226.517869949341 17.2437648773193, 226.517244338989 17.245138168335, 226.516641616821 17.2465190887451, 226.516069412231 17.2479114532471, 226.515520095825 17.2493152618408, 226.514993667603 17.2507228851318, 226.514497756958 17.2521419525146, 226.514024734497 17.253568649292, 226.513578414917 17.2550029754639, 226.513158798218 17.2564449310303, 226.512765884399 17.2578945159912, 226.512399673462 17.2593479156494, 226.512060165405 17.2608089447021, 226.511747360229 17.2622776031494, 226.511461257935 17.2637462615967, 226.511201858521 17.2652225494385, 226.510969161987 17.2667026519775, 226.510766983032 17.2681865692139, 226.510587692261 17.2696743011475, 226.51043510437 17.2711620330811, 226.510313034058 17.2726535797119, 226.510217666626 17.27414894104, 226.510149002075 17.2756404876709, 226.510107040405 17.277135848999, 226.510091781616 17.2786350250244, 226.510103225708 17.2801303863525, 226.510145187378 17.2816257476807, 226.510213851929 17.2831211090088, 226.510305404663 17.2846164703369, 226.510431289673 17.2861080169678, 226.510580062866 17.2875957489014, 226.51075553894 17.289083480835, 226.510957717896 17.2905673980713, 226.511190414429 17.2920475006104, 226.511449813843 17.2935237884521, 226.51173210144 17.2949924468994, 226.512044906616 17.2964611053467, 226.512384414673 17.2979221343994, 226.51275062561 17.2993755340576, 226.513139724731 17.3008251190186, 226.513559341431 17.302267074585, 226.514001846313 17.3037014007568, 226.514474868774 17.3051280975342, 226.514970779419 17.306547164917, 226.515493392944 17.3079586029053, 226.516042709351 17.309362411499, 226.51661491394 17.310754776001, 226.517213821411 17.3121356964111, 226.517839431763 17.3135089874268, 226.518487930298 17.3148708343506, 226.519163131714 17.3162212371826, 226.519861221313 17.3175601959229, 226.520586013794 17.3188877105713, 226.521333694458 17.3202037811279, 226.522104263306 17.3215045928955, 226.522897720337 17.3227939605713, 226.523717880249 17.3240718841553, 226.524557113647 17.3253345489502, 226.525423049927 17.3265819549561, 226.52631187439 17.3278141021729, 226.527219772339 17.3290348052979, 226.528150558472 17.3302364349365, 226.529108047485 17.3314228057861, 226.530080795288 17.3325939178467, 226.531076431274 17.3337497711182, 226.532094955444 17.3348903656006, 226.533132553101 17.3360080718994, 226.53419303894 17.3371143341064, 226.535272598267 17.3381977081299, 226.536371231079 17.3392658233643, 226.537488937378 17.3403148651123, 226.538625717163 17.341344833374, 226.539781570435 17.3423557281494, 226.540952682495 17.3433475494385, 226.542146682739 17.3443202972412, 226.543355941772 17.3452739715576, 226.544580459595 17.3462047576904, 226.545824050903 17.3471164703369, 226.547082901001 17.3480052947998, 226.548360824585 17.3488750457764, 226.549654006958 17.3497219085693, 226.550958633423 17.350549697876, 226.552282333374 17.351354598999, 226.553617477417 17.3521366119385, 226.554967880249 17.3528957366943, 226.55633354187 17.3536319732666, 226.557710647583 17.3543453216553, 226.559099197388 17.3550395965576, 226.560503005981 17.3557071685791, 226.561918258667 17.356351852417, 226.563344955444 17.356969833374, 226.564783096313 17.3575687408447, 226.566232681274 17.3581409454346, 226.56768989563 17.3586902618408, 226.569158554077 17.3592128753662, 226.570634841919 17.359712600708, 226.572122573853 17.3601894378662, 226.573617935181 17.3606395721436, 226.575120925903 17.36106300354, 226.576631546021 17.3614635467529, 226.578149795532 17.361837387085, 226.579675674438 17.3621883392334, 226.581205368042 17.362512588501, 226.58274269104 17.3628101348877, 226.584283828735 17.3630847930908, 226.585828781128 17.3633289337158, 226.587377548218 17.3635501861572, 226.588933944702 17.363748550415, 226.590490341187 17.3639163970947, 226.592050552368 17.3640613555908, 226.593614578247 17.3641757965088, 226.595178604126 17.3642673492432, 226.596746444702 17.3643321990967, 226.598314285278 17.3643741607666, 226.599882125854 17.3643856048584, 226.601449966431 17.3643741607666, 226.603017807007 17.3643321990967, 226.604581832886 17.3642673492432, 226.606145858765 17.3641757965088, 226.607709884644 17.3640613555908, 226.609270095825 17.3639163970947, 226.610830307007 17.3637447357178, 226.612382888794 17.3635501861572, 226.613931655884 17.3633289337158, 226.615480422974 17.3630809783936, 226.617021560669 17.3628101348877, 226.618558883667 17.362512588501, 226.620088577271 17.3621883392334, 226.621610641479 17.361837387085, 226.623128890991 17.3614635467529, 226.624639511108 17.36106300354, 226.626142501831 17.3606395721436, 226.627637863159 17.3601856231689, 226.629125595093 17.359712600708, 226.630601882935 17.3592128753662, 226.632070541382 17.3586902618408, 226.633531570435 17.3581409454346, 226.634977340698 17.3575687408447, 226.636415481567 17.356969833374, 226.637842178345 17.3563480377197, 226.63925743103 17.3557033538818, 226.640661239624 17.3550357818604, 226.642049789429 17.3543453216553, 226.643426895142 17.3536319732666, 226.644792556763 17.3528957366943, 226.646142959595 17.3521327972412, 226.647478103638 17.3513507843018, 226.648801803589 17.3505458831787, 226.650110244751 17.3497219085693, 226.651399612427 17.3488750457764, 226.652677536011 17.3480052947998, 226.653936386108 17.3471126556396, 226.655179977417 17.3462009429932, 226.656408309937 17.3452701568604, 226.65761756897 17.3443202972412, 226.658807754517 17.3433475494385, 226.659982681274 17.3423557281494, 226.661138534546 17.341344833374, 226.662275314331 17.3403148651123, 226.66339302063 17.3392658233643, 226.664487838745 17.3381977081299, 226.665567398071 17.3371105194092, 226.666627883911 17.3360080718994, 226.667665481567 17.3348865509033, 226.668684005737 17.3337459564209, 226.669679641724 17.3325939178467, 226.670656204224 17.3314228057861, 226.67160987854 17.3302326202393, 226.672540664673 17.3290309906006, 226.673448562622 17.3278141021729, 226.674337387085 17.3265781402588, 226.675203323364 17.3253307342529, 226.676042556763 17.324068069458, 226.676862716675 17.3227939605713, 226.677656173706 17.3215007781982, 226.678426742554 17.3201999664307, 226.679174423218 17.318883895874, 226.679899215698 17.3175563812256, 226.680597305298 17.3162174224854, 226.681272506714 17.3148670196533, 226.681921005249 17.3135051727295, 226.682546615601 17.3121318817139, 226.683145523071 17.3107509613037, 226.683717727661 17.3093585968018, 226.684267044067 17.307954788208, 226.684789657593 17.3065433502197, 226.685285568237 17.3051242828369, 226.685754776001 17.3036975860596, 226.686201095581 17.3022632598877, 226.686616897583 17.3008213043213, 226.687009811401 17.2993717193604, 226.687376022339 17.2979183197021, 226.687715530396 17.2964572906494, 226.688024520874 17.2949886322021, 226.688310623169 17.2935199737549, 226.688570022583 17.2920436859131, 226.688798904419 17.290563583374, 226.689004898071 17.2890796661377, 226.689180374146 17.2875919342041, 226.689329147339 17.2861042022705, 226.689451217651 17.2846126556396, 226.689546585083 17.2831172943115, 226.689615249634 17.2816219329834, 226.689653396606 17.2801265716553, 226.689668655396 17.2786312103271, 226.689653396606 17.277135848999, 226.689611434937 17.2756366729736, 226.689542770386 17.2741451263428, 226.689443588257 17.2726497650146, 226.689321517944 17.2711582183838, 226.689168930054 17.2696704864502, 226.688993453979 17.2681827545166, 226.688787460327 17.2666988372803, 226.688554763794 17.2652187347412, 226.68829536438 17.2637424468994, 226.688009262085 17.2622737884521, 226.687696456909 17.2608051300049, 226.687356948853 17.2593441009521, 226.686990737915 17.2578907012939, 226.686597824097 17.256441116333, 226.686178207397 17.2549991607666, 226.685731887817 17.2535648345947, 226.685258865356 17.2521381378174, 226.684762954712 17.2507190704346, 226.684236526489 17.2493114471436, 226.683687210083 17.2479076385498, 226.683115005493 17.2465152740479, 226.682512283325 17.2451343536377, 226.681886672974 17.2437610626221, 226.681238174438 17.2424030303955, 226.680562973022 17.2410526275635, 226.679864883423 17.2397136688232, 226.679140090942 17.2383861541748, 226.678392410278 17.2370700836182, 226.677618026733 17.2357692718506, 226.676824569702 17.2344799041748, 226.67600440979 17.2332057952881, 226.675161361694 17.2319431304932, 226.674295425415 17.2306957244873, 226.673410415649 17.2294635772705, 226.672498703003 17.2282428741455, 226.671564102173 17.2270412445068, 226.670610427856 17.2258548736572, 226.669637680054 17.2246837615967, 226.66863822937 17.2235317230225, 226.6676197052 17.22239112854, 226.666582107544 17.2212734222412, 226.665525436401 17.2201709747314, 226.664445877075 17.2190837860107, 226.663347244263 17.2180194854736, 226.662229537964 17.2169704437256, 226.661092758179 17.2159404754639, 226.659936904907 17.2149295806885, 226.658761978149 17.2139377593994, 226.657571792603 17.2129650115967, 226.656362533569 17.2120151519775, 226.655138015747 17.2110843658447, 226.653894424438 17.2101726531982, 226.652635574341 17.2092838287354, 226.651357650757 17.2084140777588, 226.650068283081 17.2075672149658, 226.648759841919 17.2067432403564, 226.647439956665 17.2059383392334, 226.646104812622 17.2051563262939, 226.64475440979 17.2043972015381, 226.643388748169 17.2036609649658, 226.642011642456 17.2029476165771, 226.640623092651 17.2022571563721, 226.639223098755 17.2015895843506, 226.637807846069 17.2009449005127, 226.636381149292 17.2003269195557, 226.63494682312 17.1997318267822, 226.633497238159 17.1991558074951, 226.632040023804 17.1986103057861, 226.630575180054 17.1980838775635, 226.629095077515 17.1975879669189, 226.627611160278 17.1971111297607, 226.62611579895 17.1966609954834, 226.624616622925 17.1962375640869, 226.623106002808 17.195837020874, 226.621587753296 17.195463180542, 226.620065689087 17.1951160430908, 226.618535995483 17.1947917938232, 226.617002487183 17.1944942474365, 226.615461349487 17.1942195892334, 226.613916397095 17.1939716339111, 226.612367630005 17.1937503814697, 226.610815048218 17.1935558319092, 226.609258651733 17.1933879852295, 226.607698440552 17.1932430267334, 226.60613822937 17.1931285858154, 226.604574203491 17.1930370330811, 226.603010177612 17.1929721832275, 226.601442337036 17.1929302215576)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14145'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(301, 'Nix Olympica', 'SRID=104904;POINT (230 19.7835659606)'::geometry, NULL, '1958-01-01', 'al', 'http://planetarynames.wr.usgs.gov/Feature/4314'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1849, 'Hermes Patera', 'SRID=104904;POINT (226.57 18.33)'::geometry, 'SRID=104904;POLYGON ((226.27743530274 18.067016601562, 226.25820922852 18.135681152343, 226.255462646485 18.216705322265124, 226.26507568359813 18.293609619139627, 226.25614929199594 18.331375122069314, 226.26095581055 18.369140624999, 226.28842163086 18.465270996093, 226.35159301758 18.528442382812, 226.44772338867 18.577880859374, 226.48480224609438 18.594360351561626, 226.52462768555 18.6026000976555, 226.57955932617 18.608093261718, 226.68118286133 18.586120605468, 226.70590209961 18.569641113281, 226.74435424805 18.539428710937, 226.78555297852 18.514709472656, 226.83224487305 18.498229980468, 226.86932373046687 18.488616943359126, 226.89404296875 18.4721374511715, 226.90090942383 18.451538085937, 226.90640258789 18.410339355468, 226.91189575195 18.380126953124, 226.92013549805 18.322448730468, 226.90640258789 18.251037597656, 226.87344360352 18.187866210937, 226.82949829102 18.146667480468, 226.79379272461 18.113708496093, 226.77456665039 18.102722167968, 226.72787475586 18.119201660156, 226.68392944336 18.141174316406, 226.63723754883125 18.15490722656175, 226.58779907226562 18.14254760742125, 226.56033325195 18.121948242187, 226.52188110352 18.088989257812, 226.48617553711 18.067016601562, 226.45321655274 18.083496093749, 226.38729858399 18.086242675781, 226.32412719727 18.078002929687, 226.27743530274 18.067016601562))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15690'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1688, 'Olympus Rupes', 'SRID=104904;POINT (226.43548539543502 18.401964175317982)'::geometry, 'SRID=104904;MULTILINESTRING ((227.42951774597168 22.934080123901367, 227.93671226501465 22.65593910217285, 228.34573936462402 22.4268856048584, 228.52571296691895 22.295995712280273, 228.67296028137207 22.099660873413086, 228.96746253967285 22.099660873413086, 229.62190437316895 21.739717483520508, 230.1290988922119 21.477941513061523, 230.35815620422363 21.26524543762207, 230.38258171081543 21.086992263793945, 230.2117748260498 20.55558967590332, 230.71787071228027 19.182798385620117, 230.8653507232666 18.500219345092773, 230.8653507232666 18.058469772338867, 230.8653507232666 17.96030616760254, 230.88171195983887 16.978639602661133, 230.9144344329834 16.635053634643555, 230.73446083068848 16.389638900756836, 230.6690158843994 16.242387771606445, 230.55448722839355 15.980611801147461, 230.45632362365723 15.816999435424805, 230.35815620422363 15.506139755249023, 230.0472927093506 15.457056045532227, 229.83220100402832 15.140348434448242, 229.54010200500488 14.73716926574707, 229.22923851013184 14.442667007446289, 228.86929512023926 14.213613510131836, 228.5420742034912 14.05000114440918, 228.2148494720459 14.148168563842773, 227.8221836090088 14.148168563842773, 227.2168254852295 13.984556198120117, 226.85687828063965 13.968194961547852, 226.49693489074707 14.05000114440918, 226.0879077911377 13.77186393737793, 225.80977058410645 13.755502700805664, 225.55567741394043 13.881429672241211, 225.3911952972412 14.058565139770508, 224.9426326751709 14.73716926574707, 224.76265907287598 14.73716926574707, 224.36999320983887 14.573556900024414, 223.97732734680176 14.802610397338867, 223.29015922546387 15.12983512878418, 222.70116233825684 15.391611099243164, 222.4393825531006 15.40797233581543, 221.93218803405762 15.40797233581543, 221.57224464416504 15.66975212097168, 221.4413547515869 16.09514045715332, 221.3431911468506 16.700498580932617, 221.39227104187012 17.07680320739746, 221.16321754455566 17.404027938842773, 220.89009284973145 17.53165626525879, 220.90144157409668 17.84577751159668, 221.14274787902832 17.76296043395996, 221.52316093444824 17.61672019958496, 221.86674308776855 18.074831008911133, 222.06307792663574 18.614748001098633, 221.8994655609131 18.860166549682617, 221.6376895904541 19.252832412719727, 221.62132835388184 19.59641456604004, 221.7358570098877 20.185415267944336, 221.94854927062988 20.774412155151367, 222.079439163208 21.26524543762207, 222.48846626281738 21.854246139526367, 222.99566078186035 22.508691787719727, 223.43741035461426 22.934080123901367, 223.78099250793457 23.13041114807129, 224.04277229309082 23.064966201782227, 224.3045482635498 22.999521255493164, 224.72993659973145 22.934080123901367, 224.9917163848877 22.88499641418457, 225.2862148284912 22.934080123901367, 225.72796440124512 23.01588249206543, 226.2351589202881 23.146772384643555, 226.61146354675293 23.27766227722168, 227.05321311950684 23.097688674926758, 227.42951774597168 22.934080123901367))'::geometry, '1976-01-01', 'ru', 'http://planetarynames.wr.usgs.gov/Feature/4454'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1847, 'Zeus Patera', 'SRID=104904;POINT (227.07 18.39)'::geometry, 'SRID=104904;POLYGON ((226.50457763673 18.675384521485, 226.51556396485 18.70834350586, 226.55401611329 18.766021728516, 226.6254272461 18.820953369141, 226.71881103516 18.853912353516, 226.82043457032 18.886871337891, 226.91107177735 18.886871337891, 226.99621582032 18.875885009766, 227.03741455079 18.873138427735, 226.99346923829 18.831939697266, 226.97973632813 18.77426147461, 226.99896240235 18.702850341797, 227.06213378907 18.631439208985, 227.15002441407 18.584747314454, 227.23516845704 18.568267822266, 227.30383300781875 18.59024047851625, 227.33404541016 18.628692626954, 227.34503173829 18.658905029297, 227.39721679688 18.587493896485, 227.42742919923 18.494110107422, 227.42193603516 18.408966064454, 227.39996337891 18.315582275391, 227.39172363282 18.227691650391, 227.34228515626 18.123321533204, 227.29559326173 18.018951416016, 227.21319580079 17.942047119141, 227.15551757813 17.903594970704, 227.09783935548 17.876129150391, 227.00170898438 17.845916748047, 226.9330444336 17.840423583985, 226.88635253907 17.840423583985, 226.90832519532 17.876129150391, 226.91381835938 17.925567626954, 226.90283203126 17.972259521485, 226.87536621094 18.021697998047, 226.82318115235 18.062896728516, 226.77923583985 18.098602294922, 226.83691406251 18.156280517579, 226.88360595704 18.233184814454, 226.91107177735 18.315582275391, 226.8890991211 18.40072631836, 226.88085937501 18.474884033204, 226.83142089844 18.507843017579, 226.72430419923 18.546295166016, 226.67761230469 18.584747314454, 226.6254272461 18.614959716797, 226.58972167969 18.617706298829, 226.62817382813 18.645172119141, 226.67761230469 18.650665283204, 226.61993408204 18.661651611329, 226.56500244141 18.64242553711, 226.4935913086 18.653411865235, 226.50457763673 18.675384521485))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15689'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1848, 'Athena Patera', 'SRID=104904;POINT (227.18 18.74)'::geometry, 'SRID=104904;POLYGON ((227.0290374756 18.766021728515, 227.04002380372 18.807220458984, 227.06062316896 18.840179443359, 227.08259582521 18.867645263671, 227.12928771974 18.880004882812, 227.17597961427 18.877258300781, 227.22541809083 18.866271972656, 227.28172302247 18.825073242187, 227.31605529786 18.775634765624, 227.328414917 18.731689453124, 227.33116149903 18.691864013671, 227.30369567872 18.656158447265, 227.2844696045 18.619079589843, 227.23915100099 18.599853515624, 227.18147277833 18.599853515624, 227.10594177247 18.624572753906, 227.05513000489 18.665771484374, 227.02491760255 18.705596923828, 227.0207977295 18.744049072265, 227.0290374756 18.766021728515))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15693'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1850, 'Apollo Patera', 'SRID=104904;POINT (226.45 17.94)'::geometry, 'SRID=104904;POLYGON ((226.28540039064 17.909774780272, 226.27441406252 17.938613891601, 226.26754760744 17.981185913085, 226.27716064455 18.027877807616, 226.30325317385 18.074569702147, 226.35818481447 18.091049194335, 226.40075683596 18.091049194335, 226.46804809572 18.073196411132, 226.52572631838 18.045730590819, 226.56967163088 18.023757934569, 226.63146972658 17.946853637694, 226.63558959963 17.878189086913, 226.62185668947 17.83836364746, 226.61911010744 17.806777954101, 226.59439086916 17.788925170897, 226.52847290041 17.780685424804, 226.45980834963 17.808151245116, 226.40899658205 17.832870483397, 226.37878417971 17.841110229491, 226.33758544924 17.864456176757, 226.30462646486 17.887802124022, 226.28540039064 17.909774780272))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15694'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1851, 'Olympus Paterae', 'SRID=104904;POINT (226.81 18.32)'::geometry, 'SRID=104904;POLYGON ((226.14367675781 18.452911376953, 226.16564941406 18.513336181641, 226.2041015625 18.554534912109, 226.23431396484 18.592987060547, 226.30572509766 18.625946044922, 226.36889648438 18.650665283203, 226.42108154297 18.653411865234, 226.45678710938 18.642425537109, 226.49249267578 18.700103759766, 226.54193115234 18.755035400391, 226.58312988281 18.809967041016, 226.65454101563 18.845672607422, 226.72320556641 18.870391845703, 226.82757568359 18.895111083984, 226.88525390625 18.911590576172, 226.96545410157 18.900604248046, 227.0121459961 18.900604248046, 227.04785156251 18.889617919921, 227.08355712891 18.906097412109, 227.13299560548 18.917083740234, 227.21813964844 18.911590576171, 227.28405761719 18.875885009765, 227.33349609376 18.829193115234, 227.37194824219 18.771514892578, 227.37744140626 18.735809326171, 227.38156127930375 18.711776733397812, 227.3808746337928 18.69255065917931, 227.37469482423 18.675384521484, 227.40216064454 18.620452880859, 227.43237304688 18.571014404296, 227.4515991211 18.496856689453, 227.45709228516 18.441925048828, 227.44885253907 18.38150024414, 227.44061279298 18.323822021484, 227.43237304688 18.277130126953, 227.41589355469 18.202972412109, 227.38018798829 18.120574951171, 227.34448242188 18.05191040039, 227.31701660157 17.999725341796, 227.26757812501 17.950286865234, 227.22088623048 17.911834716796, 227.17419433594 17.870635986328, 227.12475585938 17.848663330078, 227.03686523438 17.821197509765, 226.97918701173 17.801971435546, 226.88580322266 17.815704345703, 226.85009765626 17.790985107421, 226.81439208985 17.769012451171, 226.7484741211 17.741546630859, 226.68530273438 17.733306884765, 226.62762451173 17.738800048828, 226.57543945313 17.736053466796, 226.50128173829 17.72232055664, 226.39416503907 17.758026123046, 226.32550048829 17.78823852539, 226.29803466798 17.823944091796, 226.27056884766 17.843170166015, 226.21289062501 17.89810180664, 226.20465087891 17.966766357421, 226.22937011719 18.035430908203, 226.20465087891 18.084869384765, 226.18267822266 18.13980102539, 226.17169189454 18.18374633789, 226.17993164063 18.20571899414, 226.15795898438 18.252410888671, 226.13873291016 18.318328857421, 226.13049316407 18.389739990234, 226.14367675781 18.452911376953))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15695'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1870, 'Dionysus Patera', 'SRID=104904;POINT (226.77 17.96)'::geometry, 'SRID=104904;POLYGON ((226.53973388672 18.046417236328, 226.564453125 18.082122802735, 226.60015869141 18.11508178711, 226.64410400391 18.134307861328, 226.71826171875 18.117828369141, 226.77868652344 18.09310913086, 226.83361816406 18.043670654297, 226.87756347656 17.988739013672, 226.89129638672 17.936553955078, 226.8720703125 17.870635986328, 226.828125 17.82943725586, 226.7484741211 17.799224853516, 226.68530273438 17.793731689453, 226.64959716797 17.78549194336, 226.61389160156 17.782745361328, 226.63037109375 17.848663330078, 226.63037109375 17.914581298828, 226.62213134766 17.972259521485, 226.58093261719 18.021697998047, 226.53973388672 18.046417236328))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15692'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1871, 'Hera Patera', 'SRID=104904;POINT (226.23 18.45)'::geometry, 'SRID=104904;POLYGON ((226.21000671387 18.244171142578, 226.18116760254063 18.30047607421875, 226.17567443848188 18.347167968749623, 226.17155456543125 18.41445922851525, 226.19902038575 18.489990234375377, 226.24021911621563 18.549041748046875, 226.32124328613438 18.602600097655873, 226.37892150879125 18.616333007812376, 226.44209289551 18.61083984375, 226.396774292 18.582000732422, 226.3610687255875 18.55316162109375, 226.31986999512 18.511962890625, 226.2827911377 18.474884033203, 226.27043151856 18.428192138672, 226.24845886231 18.367767333984, 226.24021911621 18.21533203125, 226.21000671387 18.244171142578))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15691'); +-- TEST GIS DATA FROM OPENSTREETMAP: EARTH, Ancienne Sylvie +--Testcase 14: +CREATE TABLE "♁" ( + geom public.geometry NOT NULL, + osm_type varchar(16) NOT NULL, + osm_id int8 NOT NULL, + ver int2 NOT NULL, + arr _int8 NULL, + t json NULL +); +--Testcase 15: ETC... +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4596087 59.6907755)'::geometry, 'node', 1621246531, 4, NULL, '{"drain":"disperse"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601391 59.6904673)'::geometry, 'node', 1621246620, 24, NULL, '{"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617098 59.6910199)'::geometry, 'node', 1632220259, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617672 59.6909141)'::geometry, 'node', 1632220283, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461757 59.6909696)'::geometry, 'node', 1632220292, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614802 59.6907676)'::geometry, 'node', 1632220315, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615866 59.6907823)'::geometry, 'node', 1632220319, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611444 59.6908848)'::geometry, 'node', 1632220350, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611916 59.6908345)'::geometry, 'node', 1632220355, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.46127 59.6907954)'::geometry, 'node', 1632220358, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611342 59.6909402)'::geometry, 'node', 1632220359, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614212 59.6910868)'::geometry, 'node', 1632220364, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611621 59.6909941)'::geometry, 'node', 1632220366, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616766 59.6908145)'::geometry, 'node', 1632220378, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616314 59.691059)'::geometry, 'node', 1632220590, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613148 59.6910721)'::geometry, 'node', 1632220686, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613385 59.6907988)'::geometry, 'node', 1632497609, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614438 59.6907856)'::geometry, 'node', 1632497610, 30, NULL, '{"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461244 59.690833)'::geometry, 'node', 1632497611, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617227 59.6909514)'::geometry, 'node', 1632497612, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615805 59.6907985)'::geometry, 'node', 1632497613, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616825 59.6908428)'::geometry, 'node', 1632497614, 29, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614541 59.6909278)'::geometry, 'node', 1632497615, 34, NULL, '{"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616021 59.6910564)'::geometry, 'node', 1632497616, 26, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616651 59.6910293)'::geometry, 'node', 1632497617, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614666 59.6910732)'::geometry, 'node', 1632497618, 30, NULL, '{"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613231 59.6910597)'::geometry, 'node', 1632497619, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612077 59.691005)'::geometry, 'node', 1632497620, 31, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611782 59.690902)'::geometry, 'node', 1632497621, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612041 59.6907321)'::geometry, 'node', 1632503254, 6, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.462536 59.6908707)'::geometry, 'node', 1652587953, 5, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4619277 59.6908578)'::geometry, 'node', 1652587958, 5, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617256 59.6909215)'::geometry, 'node', 3177639362, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612018 59.6909805)'::geometry, 'node', 3188928044, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613001 59.6906759)'::geometry, 'node', 3218618266, 4, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614144 59.6907882)'::geometry, 'node', 4912277772, 4, NULL, '{"board_type":"history","information":"board","name":"Флора","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615482 59.6907937)'::geometry, 'node', 4912277773, 4, NULL, '{"board_type":"history","information":"board","name":"Урания","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613145 59.6908057)'::geometry, 'node', 4912277774, 4, NULL, '{"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616653 59.6908341)'::geometry, 'node', 4912277775, 4, NULL, '{"board_type":"history","information":"board","name":"Клио","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612216 59.6908451)'::geometry, 'node', 4912277776, 4, NULL, '{"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611751 59.690919)'::geometry, 'node', 4912277777, 4, NULL, '{"board_type":"history","information":"board","name":"Талия","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617272 59.6909351)'::geometry, 'node', 4912277778, 4, NULL, '{"board_type":"history","information":"board","name":"Калиопа","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612298 59.691015)'::geometry, 'node', 4912277779, 4, NULL, '{"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616819 59.6910157)'::geometry, 'node', 4912277780, 4, NULL, '{"board_type":"history","information":"board","name":"Полигимния","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461621 59.6910498)'::geometry, 'node', 4912277781, 4, NULL, '{"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613548 59.6910624)'::geometry, 'node', 4912277782, 4, NULL, '{"board_type":"history","information":"board","name":"Эрато","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615016 59.6910712)'::geometry, 'node', 4912277783, 4, NULL, '{"board_type":"history","information":"board","name":"Меркурий","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608954 59.6897746)'::geometry, 'node', 5251698420, 25, NULL, '{"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460198 59.6905729)'::geometry, 'node', 6758903438, 6, NULL, '{"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4625734 59.6908311)'::geometry, 'node', 8331430683, 3, NULL, '{"inlet":"grate","manhole":"drain","man_made":"manhole"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614743 59.690923)'::geometry, 'node', 8530936200, 1, NULL, '{"board_type":"history","information":"board","name":"Аполлон","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4597619 59.6907527)'::geometry, 'node', 9140565043, 1, NULL, '{"ford":"yes"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4606891 59.6906687)'::geometry, 'node', 9140576937, 3, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608515 59.6907117)'::geometry, 'node', 9140576938, 4, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613945 59.6911519)'::geometry, 'node', 9143069530, 5, NULL, '{"drain":"no","source:direction":"survey"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('POINT (30.4615903 59.6911716)'::geometry, 'node', 9143069534, 1, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460339 59.6906064)'::geometry, 'node', 9143093777, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601191 59.6906349)'::geometry, 'node', 9143093778, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610445 59.6908345)'::geometry, 'node', 9143093802, 4, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610243 59.6909861)'::geometry, 'node', 9143093804, 3, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612126 59.691117)'::geometry, 'node', 9143093806, 4, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460445 59.6910504)'::geometry, 'node', 9656736571, 2, NULL, '{"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4608056 59.6895935, 30.4608954 59.6897746, 30.4609447 59.6898691, 30.4614541 59.6909278)'::geometry, 'way', 30995960, 42, '{9140727117,5251698420,1518870630,1632497615}', '{"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605616 59.6906319, 30.4597619 59.6907527, 30.4596087 59.6907755)'::geometry, 'way', 149099000, 6, '{1621246509,9140565043,1621246531}', '{"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604741 59.6903357, 30.4604598 59.6904575, 30.4604646 59.6905099, 30.4604784 59.6905443, 30.4604933 59.6905665, 30.4605321 59.6905996, 30.4605616 59.6906319)'::geometry, 'way', 149099004, 8, '{1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601177 59.6905796, 30.4600903 59.6905709, 30.4600721 59.6905605, 30.4600579 59.6905458, 30.4600519 59.6905296, 30.4600545 59.6905133, 30.4600656 59.6904979, 30.4600844 59.6904845, 30.4601095 59.690474, 30.4601391 59.6904673, 30.460169 59.6904648, 30.4601991 59.6904661, 30.4602277 59.6904711, 30.4602498 59.6904787, 30.4602686 59.6904892, 30.4602829 59.6905018, 30.4602918 59.6905174, 30.4602917 59.6905327, 30.4602881 59.6905462, 30.4602793 59.6905579)'::geometry, 'way', 149099028, 5, '{9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949}', '{"barrier":"fence","colour":"green","fence_type":"wood","height":"2"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4603352 59.6911039, 30.460353 59.6910638, 30.4603719 59.6910414, 30.4603979 59.691021, 30.4604807 59.6909761, 30.460577 59.6909284, 30.4606406 59.6908886, 30.460669 59.6908562, 30.460673 59.6908234, 30.4606633 59.6907504, 30.4606582 59.6907286, 30.4606491 59.6907025, 30.4606314 59.690668, 30.460609 59.690636, 30.4605858 59.6906064, 30.4605578 59.6905735, 30.4605362 59.6905385, 30.4605214 59.6905022, 30.4605119 59.6904644, 30.4605095 59.6904098, 30.460512 59.6903499, 30.4605096 59.6903011)'::geometry, 'way', 149099029, 36, '{9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684}', '{"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610979 59.6907799, 30.4608515 59.6907117)'::geometry, 'way', 149099034, 9, '{1632503255,9140576938}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4629005 59.6913411, 30.4614541 59.6909278)'::geometry, 'way', 150294524, 8, '{1239612692,1632497615}', '{"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613148 59.6910721, 30.4613667 59.6910818, 30.4614212 59.6910868, 30.4614766 59.6910869, 30.4615311 59.6910822, 30.4615833 59.6910728, 30.4616314 59.691059, 30.461674 59.6910412, 30.4617098 59.6910199, 30.4617378 59.6909958, 30.461757 59.6909696, 30.4617669 59.6909421, 30.4617672 59.6909141, 30.4617579 59.6908866, 30.4617393 59.6908603, 30.4617119 59.690836, 30.4616766 59.6908145, 30.4616343 59.6907964, 30.4615866 59.6907823, 30.4615347 59.6907726, 30.4614802 59.6907676, 30.4614248 59.6907674, 30.4613703 59.6907721, 30.4613181 59.6907815, 30.46127 59.6907954, 30.4612274 59.6908132, 30.4611916 59.6908345, 30.4611636 59.6908586, 30.4611444 59.6908848, 30.4611345 59.6909123, 30.4611342 59.6909402, 30.4611435 59.6909678, 30.4611621 59.6909941, 30.4611895 59.6910184, 30.4612248 59.6910399, 30.461267 59.6910579, 30.4613148 59.6910721)'::geometry, 'way', 150294525, 6, '{1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686}', '{"name":"Дубовое кольцо"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.460726 59.6910052, 30.460614 59.6910145, 30.4605241 59.69102, 30.4604597 59.691022, 30.4603979 59.691021)'::geometry, 'way', 150294532, 30, '{1632497615,1632220252,9140727238,9140727242,9140727239,1621246592}', '{"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605096 59.6903011, 30.4614541 59.6909278)'::geometry, 'way', 150294541, 8, '{1239612684,1632497615}', '{"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4617339 59.6901702)'::geometry, 'way', 150294547, 9, '{1632497615,1518870645}', '{"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461819 59.6910085, 30.4618473 59.6909863, 30.4618928 59.6909647, 30.461951 59.6909401, 30.4620356 59.6909251, 30.462536 59.6908707)'::geometry, 'way', 152440395, 6, '{1652587944,1652587948,1652587950,9143093800,1652587952,1652587953}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613063 59.6907075, 30.4612631 59.6907161, 30.4612041 59.6907321)'::geometry, 'way', 152442436, 10, '{1652605207,9143204222,1632503254}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4617627 59.6907689, 30.4618218 59.6907946, 30.4618794 59.6908253, 30.4619277 59.6908578)'::geometry, 'way', 152442438, 8, '{1652605205,1652605201,1652605200,1652587958}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4612018 59.6909805, 30.4617256 59.6909215, 30.4625734 59.6908311, 30.4628306 59.6908088)'::geometry, 'way', 311975108, 20, '{3188928044,3177639362,8331430683,7911801321}', '{"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611708 59.6911018, 30.4611289 59.6910829, 30.4610793 59.6910531, 30.4610552 59.6910294, 30.4610432 59.6910153, 30.4610243 59.6909861)'::geometry, 'way', 313051687, 8, '{1632503180,9143069533,9143093805,9143069532,1632503185,9143093804}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061)'::geometry, 'way', 426269715, 5, '{4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051}', '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603979 59.691021, 30.4603224 59.6910067, 30.4602382 59.6909843, 30.4601137 59.6909482, 30.4600256 59.6909178, 30.4599203 59.6908773, 30.4597958 59.6908259, 30.4597422 59.6908088, 30.4596966 59.6907997, 30.4596501 59.6907961, 30.4596189 59.6907966, 30.4595885 59.6908005, 30.4595518 59.6908091, 30.4595101 59.6908241)'::geometry, 'way', 438780267, 20, '{1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957}', '{"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4625498 59.6908065, 30.4614541 59.6909278)'::geometry, 'way', 750779153, 4, '{1632220250,1632497615}', '{"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4631938 59.6918756)'::geometry, 'way', 750779155, 5, '{1632497615,1195120146}', '{"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4606491 59.6907025)'::geometry, 'way', 750779156, 5, '{1632497615,1621246419}', '{"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4625914 59.6924527)'::geometry, 'way', 750779157, 4, '{1632497615,1652587960}', '{"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611165 59.6918779, 30.46118 59.6916919, 30.4614541 59.6909278)'::geometry, 'way', 750779158, 4, '{9159459639,1239612686,1632497615}', '{"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4596189 59.6907966, 30.4596712 59.6907865, 30.4597275 59.6907729, 30.459757 59.6907607, 30.4597619 59.6907527, 30.4597677 59.6907431, 30.4597919 59.6907269, 30.4598455 59.6907093, 30.459934 59.6906931, 30.4600118 59.6906782, 30.4600467 59.690666, 30.4600681 59.6906484, 30.4600725 59.6906275, 30.4600655 59.6906044, 30.4600295 59.6905552, 30.4600066 59.6905268, 30.4600031 59.690512, 30.4600111 59.6904995, 30.460044 59.6904799, 30.4600789 59.6904629, 30.4601241 59.6904473)'::geometry, 'way', 988944864, 2, '{9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340}', '{"highway":"path","surface":"ground"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4607784 59.690696, 30.4606891 59.6906687)'::geometry, 'way', 988944880, 3, '{9140576936,9140576937}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601316 59.6905738, 30.4601383 59.6905745, 30.460144 59.6905725, 30.4601453 59.6905691, 30.4601415 59.6905663, 30.4601348 59.6905656, 30.4601291 59.6905676, 30.4601278 59.6905709, 30.4601316 59.6905738)'::geometry, 'way', 989184163, 1, '{9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601637 59.6905695, 30.4601704 59.6905701, 30.4601761 59.6905682, 30.4601774 59.6905648, 30.4601736 59.6905619, 30.4601668 59.6905613, 30.4601612 59.6905632, 30.4601599 59.6905666, 30.4601637 59.6905695)'::geometry, 'way', 989184166, 1, '{9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4615026 59.6911479, 30.4614481 59.6911519, 30.4613945 59.6911519)'::geometry, 'way', 989211851, 4, '{1652605211,9143069529,9143069530}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603719 59.6910414, 30.4597387 59.6911122)'::geometry, 'way', 989211857, 12, '{8650331583,4260007752}', '{"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603446 59.6911727, 30.4603806 59.6910714, 30.4603967 59.691047, 30.4604235 59.6910376, 30.4604664 59.6910348, 30.4605415 59.6910308)'::geometry, 'way', 989211858, 1, '{9143069609,9143069608,9143069607,9143069606,9143069605,9143069604}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613583 59.6906799, 30.4614025 59.6907746, 30.461428 59.6907726, 30.4614548 59.6907726, 30.4614763 59.6907739)'::geometry, 'way', 989211859, 1, '{9143093728,9143093727,9143093726,9143093725,9143093724}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461314 59.6906832, 30.461361 59.6907794, 30.4613301 59.6907854, 30.4613033 59.6907929, 30.4612845 59.690799, 30.4609841 59.6905973)'::geometry, 'way', 989211860, 1, '{9143093729,9143093730,9143093731,9143093732,9143093734,9143093733}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611484 59.6909364, 30.4611471 59.6909174, 30.4611497 59.6909005, 30.4611578 59.6908836, 30.4611645 59.6908714, 30.4611739 59.6908606, 30.4606917 59.6907283, 30.460681 59.6907283, 30.460677 59.6907337, 30.460685 59.6907601, 30.4606891 59.6907817, 30.4606917 59.6908129, 30.4606944 59.6908426, 30.4606837 59.6908656, 30.4606596 59.6908927, 30.4606247 59.6909184, 30.460563 59.6909523, 30.460453 59.6910064)'::geometry, 'way', 989211861, 1, '{9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605335 59.6903364, 30.4605335 59.6903946, 30.4605308 59.6904501, 30.4605348 59.6904813, 30.4605442 59.6905137, 30.4605576 59.6905394, 30.4605818 59.6905773, 30.4606193 59.6906247, 30.4606408 59.6906545, 30.4606596 59.6906856, 30.4606716 59.6906958, 30.4606958 59.6907039, 30.4611947 59.6908433, 30.4612155 59.6908301, 30.4612369 59.6908166, 30.461253 59.6908098, 30.4609492 59.6906112)'::geometry, 'way', 989211862, 1, '{9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604919 59.6903357, 30.4604919 59.690398, 30.4604892 59.6904494, 30.4604946 59.690486, 30.4605053 59.6905157, 30.4605161 59.6905387, 30.4605402 59.6905766, 30.4605778 59.690624, 30.4605992 59.6906538, 30.460626 59.6906931, 30.4606368 59.6907255, 30.4606448 59.6907574, 30.4606502 59.6907871, 30.4606542 59.6908196, 30.4606502 59.6908494, 30.4606327 59.6908751, 30.4606059 59.6908927, 30.4605496 59.6909266, 30.4604128 59.6909942)'::geometry, 'way', 989211863, 1, '{9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619893 59.6908956, 30.4620356 59.6909251)'::geometry, 'way', 989211867, 2, '{1652587955,1652587952}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610753 59.6908007, 30.4610979 59.6907799)'::geometry, 'way', 989211868, 4, '{9143093801,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611491 59.6907553, 30.4610979 59.6907799)'::geometry, 'way', 989211869, 4, '{1632503177,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461012 59.6909572, 30.4610056 59.6909157, 30.4610163 59.6908698, 30.4610445 59.6908345)'::geometry, 'way', 989211870, 4, '{1632503179,9143093803,1632503181,9143093802}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613456 59.6911475, 30.46131 59.6911438, 30.4612696 59.6911343, 30.4612126 59.691117)'::geometry, 'way', 989211871, 4, '{1652605209,9143069531,1632503237,9143093806}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4622826 59.6903796)'::geometry, 'way', 991343632, 2, '{1632497615,1518870652}', '{"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4620021 59.690877, 30.4617551 59.6909043, 30.4617579 59.690914, 30.4617593 59.6909255, 30.4617606 59.6909377)'::geometry, 'way', 991343633, 1, '{9159456550,9159456549,9159456545,9159456544,9159456543}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619941 59.6908547, 30.4617471 59.690882, 30.4617392 59.6908714, 30.4617298 59.6908606, 30.4617164 59.6908491)'::geometry, 'way', 991343634, 1, '{9159456552,9159456551,9159456548,9159456547,9159456546}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4602794 59.6911745, 30.4603083 59.6910871)'::geometry, 'way', 991343661, 1, '{9159459675,9159459674}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4614541 59.6909278)'::geometry, 'way', 1042527594, 11, '{9140727237,1632497615}', '{"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4611342 59.6909402, 30.4611345 59.6909123, 30.4611444 59.6908848, 30.4611636 59.6908586, 30.4611916 59.6908345, 30.4612274 59.6908132, 30.46127 59.6907954, 30.4613181 59.6907815, 30.4613703 59.6907721, 30.4614248 59.6907674, 30.4614802 59.6907676, 30.4615347 59.6907726, 30.4615866 59.6907823, 30.4616343 59.6907964, 30.4616766 59.6908145, 30.4617119 59.690836, 30.4617393 59.6908603, 30.4617579 59.6908866, 30.4617672 59.6909141, 30.4617669 59.6909421, 30.461757 59.6909696, 30.4617378 59.6909958, 30.4617098 59.6910199, 30.461674 59.6910412, 30.4616314 59.691059, 30.4615833 59.6910728, 30.4615311 59.6910822, 30.4614766 59.6910869, 30.4614212 59.6910868, 30.4613667 59.6910818, 30.4613148 59.6910721, 30.461267 59.6910579, 30.4612248 59.6910399, 30.4611895 59.6910184, 30.4611621 59.6909941, 30.4611435 59.6909678, 30.4611342 59.6909402)))'::geometry, 'way', 150294525, 6, NULL, '{"name":"Дубовое кольцо"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034)))'::geometry, 'way', 426269715, 5, NULL, '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601278 59.6905709, 30.4601291 59.6905676, 30.4601348 59.6905656, 30.4601415 59.6905663, 30.4601453 59.6905691, 30.460144 59.6905725, 30.4601383 59.6905745, 30.4601316 59.6905738, 30.4601278 59.6905709)))'::geometry, 'way', 989184163, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601599 59.6905666, 30.4601612 59.6905632, 30.4601668 59.6905613, 30.4601736 59.6905619, 30.4601774 59.6905648, 30.4601761 59.6905682, 30.4601704 59.6905701, 30.4601637 59.6905695, 30.4601599 59.6905666)))'::geometry, 'way', 989184166, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +--Testcase 40: +CREATE FOREIGN TABLE "types_PostGIS"( "i" int OPTIONS (key 'true'), gm geometry, gg geography, r raster, t text, gm1 geometry, gg1 geography) SERVER sqlite_svr; +--Testcase 41: ERR - raster +INSERT INTO "types_PostGIS" ( "i", gm, gg, r, t ) VALUES (1, decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('1223456890', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); +ERROR: column "r" is of type raster but expression is of type bytea +LINE 1: ...100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('12... + ^ +HINT: You will need to rewrite or cast the expression. +--Testcase 42: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; +--Testcase 43: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; +-- Insert SpatiaLite BLOB, read PostGOS/GEOS BLOB +--Testcase 44: OK +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (1, decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); +--Testcase 45: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; +--Testcase 46: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; +--Testcase 47: OK +SELECT "i", gm, gg, t FROM "types_PostGIS"; + i | gm | gg | t +---+----------------------------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"} +(1 row) + +--Testcase 48: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS"; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, gm, gg, t + SQLite query: SELECT `i`, `gm`, `gg`, `t` FROM main."types_PostGIS" +(3 rows) + +--Testcase 49: ERR, no SRID +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); +ERROR: SpatiaLite doesn't accept GIS data without SRID +HINT: Not deparsable value for SpatiaLite in 42 bytes +CONTEXT: Hex data: 0101000000BF72CE99FE763E40ED4960730ED84D40 +--Testcase 50: ERR, no SRID +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); +ERROR: SpatiaLite doesn't accept GIS data without SRID +HINT: Not deparsable value for SpatiaLite in 42 bytes +CONTEXT: Hex data: 0101000000BF72CE99FE763E40ED4960730ED84D40 +--Testcase 51: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); + QUERY PLAN +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, gm, gg, t + SQLite query: SELECT `i`, `gm`, `gg`, `t` FROM main."types_PostGIS" WHERE ((`gm` = X'0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe')) +(3 rows) + +--Testcase 52: +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); + i | gm | gg | t +---+----------------------------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | 0101000020E6100000BF72CE99FE763E40ED4960730ED84D40 | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"} +(1 row) + +--Testcase 53: ERR damaged, but there is SRID +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = (decode('0101000020e6100000bf72ce99fe76', 'hex')::geometry); +ERROR: WKB structure does not match expected size! +-- Insert PostGIS/GEOS BLOB, read SpatiaLite BLOB +--Testcase 54: OK +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (2, decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); +--Testcase 55: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; +--Testcase 56: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; +--Testcase 57: OK +SELECT "i", gm, gg, t FROM "types_PostGIS"; + i | gm | gg | t +---+----------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1 | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"} + 2 | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | \x0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe | {"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"} +(2 rows) + +--Testcase 58: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; +--Testcase 59: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; +--Testcase 60: ERR damaged geometry, but there is SRID +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (3, decode('0101000020e6100000bf72ce99fe76', 'hex'), NULL, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); +ERROR: WKB structure does not match expected size! +--Testcase 61: ERR damaged geography, but there is SRID +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (4, NULL, decode('0101000020e6100000bf72ce99fe76', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); +ERROR: WKB structure does not match expected size! +--Testcase 62: +CREATE FOREIGN TABLE "♂" ( + id int4 OPTIONS (key 'true'), + "UAI" varchar(254), + "⌖" geometry, + geom geometry, + "t₀" date, + "class" text, + "URL" varchar(80) +) SERVER sqlite_svr; +--Testcase 63: +INSERT INTO "♂" SELECT * FROM "♂"."テスト"; +--Testcase 64: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE bytea; +--Testcase 65: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE bytea; +--Testcase 66: +SELECT * FROM "♂"; + id | UAI | ⌖ | geom | t₀ | class | URL +------+-----------------+----------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------+------------------------------------------------- + 991 | Olympus Mons | \x0001c89901004f337ddd51466c404135e6341ba732404f337ddd51466c404135e6341ba732407c010000004f337ddd51466c404135e6341ba73240fe | \x0001c8990100000000e436986b40000000c0aaf62a400000007459066d40000000600bad37407c0300000001000000470000000000008430f96b40000000a0d7543740000000144c076c4000000020f25237400000002c610a6c40000000a09790374000000094ff166c40000000e0f3973740000000846f196c40000000a016753740000000fc16226c40000000e0213d37400000008c85356c4000000020ec6f3740000000f413476c400000006040a93740000000ac82516c40000000a05aa73740000000f4e3736c40000000e0656f37400000004415866c40000000a0e9633740000000c418986c40000000a0e23f37400000001c079d6c4000000060c03137400000001c6ea76c40000000e0420137400000000cecb06c40000000e050c13640000000a4e9bb6c4000000020627136400000000ce7c76c40000000a072253640000000ac63d76c40000000e07eed3540000000a4dfe96c40000000a08ea53540000000d45bfb6c40000000e0ad1535400000007459066d40000000e0f0e133400000009c5bfc6c40000000203f7a3240000000a4dfe96c40000000e067be31400000000401e76c4000000020f63731400000002cb3e56c400000002076c03040000000a426df6c40000000208a5a3040000000c4a5da6c40000000c0ebe42f400000007c24d46c40000000c0bcf42e400000006ca3ce6c4000000040b0b42e40000000b4a3c66c40000000405e992e40000000cce1bf6c4000000040b1122e400000004c3ab76c40000000c0bb472d400000009c26ad6c40000000c00ec12c40000000cca29f6c40000000c0b1342c4000000064b1976c40000000409bb52b40000000c457906c40000000c039aa2b400000009c2d8a6c40000000409dec2b40000000b4137e6c400000004022dc2b4000000014906b6c40000000c01dc42b40000000d483616c40000000c0bda02b40000000e40b566c40000000401ab42b40000000c41f4d6c40000000c004ae2b40000000fc07426c40000000c004442b400000000cda386c40000000c0353c2b400000004c892a6c40000000c0aaf62a40000000348d186c40000000c09e2e2b400000007411056c40000000c08e762b400000009c18e46b400000004065362c40000000bc9dcc6b400000004044ce2c40000000bca2b56b40000000c00ad62d40000000c4e8ad6b40000000c07ace2e4000000034a4a96b4000000020360d3040000000f4c3a26b4000000020356930400000004ce2a26b4000000060c0a830400000006c52a66b4000000020b717314000000054e89f6b40000000a0ba523140000000e436986b40000000e01f6c31400000002c599a6b40000000603ed8314000000084e9a56b4000000020e0123240000000946aab6b4000000060f88e3240000000e4eaac6b40000000a0131b3340000000946aab6b40000000a03be7334000000014acad6b4000000020f79734400000003cedb86b40000000a086673540000000bcf0ca6b4000000060ae333640000000e487e06b40000000e0aa453740000000c407ec6b40000000e025ab37400000006ce9eb6b40000000600bad37400000009c6ef26b40000000600bad3740000000d494f66b40000000e0e68a37400000008430f96b40000000a0d7543740fe | 01-01-1973 | mo | http://planetarynames.wr.usgs.gov/Feature/4453 + 248 | Karzok | \x0001c8990100452873b369886c406df4308d4d673240452873b369886c406df4308d4d6732407c01000000452873b369886c406df4308d4d673240fe | \x0001c8990100f0ffff2b31846c40fbffffdf5b463240090000bce48c6c4000000060688832407c0300000001000000690100001000005c9e886c40f3ffff1f5d4632400e0000f48a886c40fbffffdf5b463240f3ffff8377886c40f3ffff1f5d463240f1ffff1b64886c40f8ffffdf60463240efffffb350886c40f6ffff5f674632401100004c3d886c400000006070463240fcfffff329886c40fbffffdf7b4632400b00009c16886c400c0000208a4632401100004c03886c40030000a09a4632400400000cf0876c40f4ffffdfad463240100000d4dc876c40fbffffdfc34632400a0000acc9876c4005000020dc463240f1ffff93b6876c4008000020f74632400c00008ca3876c40f2ffff5f14473240f1ffff9390876c40f2ffff5f34473240010000b47d876c40f5ffff9f56473240feffffe36a876c400e0000a07b4732400100002c58876c40faffff1fa34732400c00008c45876c40060000e0cc473240fbffff0333876c400b000060f9473240f1ffff9320876c40f7ffff1f28483240090000440e876c400b00006059483240faffff13fc866c40060000e08c4832400d000004ea866c400d0000e0c24832400400000cd8866c4004000060fb483240efffff3bc6866c40feffff1f36493240fbffff8bb4866c400400006073493240fbffff03a3866c400d0000e0b2493240f0ffffa391866c40fcffff9ff44932400600006480866c400a0000a0384a3240070000546f866c40080000207f4a3240fdffff6b5e866c40000000a0c74a32400a0000ac4d866c40030000a0124b32400200001c3d866c40000000a05f4b3240efffffb32c866c40ffffffdfae4b3240040000841c866c40f7ffff1f004c32400d00007c0c866c40fbffffdf534c3240f9ffffabfc856c400b000060a94c3240f2ffff0bed856c4001000020014d3240f0ffffa3dd856c400d0000e05a4d3240fdffff6bce856c40f5ffff9fb64d32400f00006cbf856c40fcffff9f144e3240020000a4b0856c40f2ffff5f744e3240f1ffff1ba2856c40feffff1fd64e3240110000c493856c40f9ffff9f394f32400a0000ac85856c40080000209f4f3240080000cc77856c40f5ffff9f065032400100002c6a856c40000000a06f503240f6ffffcb5c856c40030000a0da5032400a0000ac4f856c40f6ffff5f47513240f6ffffcb42856c40f4ffffdfb55132400b00002436856c40feffff1f26523240080000cc29856c40090000e0975232400a0000ac1d856c40040000600b533240f5ffffdb11856c4000000060805332400900004406856c40ffffffdff6533240050000fcfa846c40ffffffdf6e543240f3fffffbef846c4000000060e85432400000003ce5846c400400006063553240f6ffffcbda846c40090000e0df553240020000a4d0846c40070000a05d563240000000c4c6846c40fcffff9fdc563240f0ffff2bbd846c40f3ffff1f5d5732400f0000e4b3846c40f5ffff9fde573240f4ffffebaa846c40f9ffff9f61583240efffff3ba2846c40070000a0e5583240f5ffffdb99846c40030000a06a593240110000c491846c40f8ffffdff05932400d0000048a846c40f7ffff1f785a3240f1ffff9382846c4000000060005b32400f00006c7b846c40f9ffff9f895b32400b00009c74846c40fbffffdf135c3240f1ffff1b6e846c40ffffffdf9e5c3240060000ec67846c400d0000e02a5d3240faffff1362846c40000000a0b75d3240fbffff8b5c846c40f3ffff1f455e32400700005457846c40faffff1fd35e3240f4ffff7352846c40020000e0615f3240060000ec4d846c400b000060f15f3240010000b449846c400b00006081603240080000cc45846c400c00002012613240efffff3b42846c40faffff1fa3613240fbffff033f846c40fcffff9f346232400b0000243c846c40f5ffff9fc66232400300009439846c40f8ffffdf58633240feffff5b37846c4004000060eb633240fcffff7b35846c40070000607e643240fcfffff333846c400b00006011653240000000c432846c40fcffff9fa46532400f0000e431846c40f7ffff1f38663240feffff5b31846c400e0000a0cb663240f0ffff2b31846c40080000205f6732400700005431846c40030000a0f2673240ffffffd331846c40feffff1f86683240f9ffffab32846c40f9ffff9f19693240ffffffd333846c40060000e0ac693240feffff5b35846c40090000e03f6a32400a00003437846c400d0000e0d26a3240f5ffff6339846c40fdffff5f656b3240060000ec3b846c40090000e0f76b3240000000c43e846c40f9ffff9f896c3240f3fffffb41846c40040000601b6d3240fcffff7b45846c40f2ffff5fac6d3240feffff5b49846c40060000e03c6e32400c00008c4d846c40f3ffff1fcd6e3240faffff1352846c40fcffff9f5c6f3240f4ffffeb56846c4004000060eb6f3240f1ffff1b5c846c40f9ffff9f79703240f0ffffa361846c4008000020077132400500007467846c40fbffffdf93713240faffff9b6d846c40090000e01f723240f1ffff1b74846c40faffff1fab723240feffffe37a846c40fdffff5f357332400d00000482846c40f5ffff9fbe7332400f00006c89846c40ffffffdf46743240f0ffff2b91846c4007000060ce7432400000003c99846c40fcffff9f5475324003000094a1846c40020000e0d975324009000044aa846c40f4ffffdf5d7632400000003cb3846c40f8ffffdfe07632400d00007cbc846c40030000a0627732400400000cc6846c40faffff1fe3773240060000eccf846c400c00002062783240faffff13da846c40f7ffff1fe078324004000084e4846c40fcffff9f5c7932400000003cef846c40000000a0d7793240efffff3bfa846c400b000060517a3240f3ffff8305856c400b000060c97a32400c00001411856c40f7ffff1f407b3240feffffe31c856c40fdffff5fb57b3240fbffff0329856c40f8ffffdf287c3240feffff5b35856c40030000a09a7c3240f3fffffb41856c400d0000e00a7d3240070000dc4e856c40f9ffff9f797d3240f3fffffb5b856c4007000060e67d3240f5ffff6369856c400b000060517e3240fbffff0377856c40030000a0ba7e3240070000dc84856c400c000020227f3240050000fc92856c40090000e0877f32401100004ca1856c400e0000a0eb7f3240f5ffffdbaf856c40fdffff5f4d803240020000a4be856c40fdffff5fad803240f0ffffa3cd856c40faffff1f0b813240070000dcdc856c400800002067813240ffffff4bec856c40f8ffffdfc0813240060000ecfb856c40f8ffffdf18823240110000c40b866c40f5ffff9f6e823240080000cc1b866c400c000020c2823240f3fffffb2b866c400e0000a013833240060000643c866c400d0000e062833240050000fc4c866c40f7ffff1fb0833240f7ffffbb5d866c40faffff1ffb833240f9ffffab6e866c400e0000a043843240110000c47f866c400c0000208a843240fbffff0391866c4007000060ce843240fdffff6ba2866c400000006010853240fcfffff3b3866c40090000e04f8532400a0000acc5866c40f3ffff1f8d853240fcffff7bd7866c40090000e0c7853240fcffff7be9866c40000000600086324003000094fb866c40f5ffff9f36863240080000cc0d876c400c0000206a863240f1ffff1b20876c400e0000a09b863240f1ffff9332876c40f9ffff5fca8632400200001c45876c40ffffffdff6863240110000c457876c400a0000a020873240040000846a876c40f7ffff1f48873240feffff5b7d876c40f3ffff1f6d8732400900004490876c40000000a08f873240f7ffff43a3876c40000000a0af873240f6ffff53b6876c40060000e0cc87324005000074c9876c40090000e0e7873240020000a4dc876c400000006000883240f5ffffdbef876c40feffff1f16883240f9ffff2303886c400b000060298832400d00007c16886c400c0000203a883240f5ffffdb29886c40f7ffff1f488832400000003c3d886c40fbffffdf53883240f9ffffab50886c40060000e05c883240faffff1364886c4004000060638832400c00008c77886c400800002067883240050000fc8a886c400000006068883240f4ffff739e886c4008000020678832400f0000e4b1886c40faffff1f6388324007000054c5886c40060000e05c883240090000bcd8886c40fbffffdf538832400b000024ec886c40f7ffff1f48883240fcffff7bff886c400c0000203a883240100000d412896c400b00006029883240f1ffff1b26896c40feffff1f16883240feffff5b39896c40f7ffff1f00883240fbffff8b4c896c40090000e0e78732400a0000ac5f896c40060000e0cc873240090000bc72896c40f6ffff5faf873240f7ffffbb85896c40000000a08f873240020000a498896c40f3ffff1f6d87324005000074ab896c40f7ffff1f48873240f8ffff33be896c400a0000a020873240070000dcd0896c40f5ffff9ff68632400f00006ce3896c40f9ffff5fca863240f5ffffdbf5896c40040000609b863240f8ffff33088a6c400c0000206a863240fdffff6b1a8a6c400700006036863240040000842c8a6c4000000060008632400d00007c3e8a6c40090000e0c7853240f6ffff53508a6c40060000e08c8532400d000004628a6c40000000a04f85324003000094738a6c40f7ffff1f10853240050000fc848a6c40feffff1fce843240efffff3b968a6c400c0000208a84324007000054a78a6c400e0000a043843240efffff3bb88a6c400d0000e0fa833240050000fcc88a6c40090000e0af83324003000094d98a6c400d0000e062833240f3fffffbe98a6c400400006013833240f8ffff33fa8a6c40020000e0c1823240f8ffff330a8b6c40070000606e8232400400000c1a8b6c400a0000a0188232400a0000ac298b6c400a0000a0c08132400200001c398b6c40ffffffdf66813240f6ffff53488b6c400d0000e00a81324007000054578b6c40f3ffff1fad803240f1ffff1b668b6c40f3ffff1f4d803240f9ffffab748b6c4004000060eb7f3240050000fc828b6c40000000a0877f32400200001c918b6c40020000e0217f32400e0000f49e8b6c40f9ffff5fba7e3240f1ffff93ac8b6c4001000020517e3240fcfffff3b98b6c40feffff1fe67d32400200001cc78b6c4001000020797d3240f3fffffbd38b6c40030000a00a7d32400b00009ce08b6c40f9ffff5f9a7c32400e0000f4ec8b6c4000000060287c3240f2ffff0bf98b6c40060000e0b47b3240feffffe3048c6c40090000e03f7b3240f4ffff73108c6c4001000020c97a3240f7ffffbb1b8c6c4001000020517a3240090000bc268c6c40f6ffff5fd779324005000074318c6c40050000205c7932400f0000e43b8c6c40090000e0df7832400400000c468c6c40020000e0617832400f0000e44f8c6c40030000a0e277324005000074598c6c400c00002062773240090000bc628c6c400a0000a0e0763240010000b46b8c6c40070000a05d7632401000005c748c6c400b000060d9753240090000bc7c8c6c40f2ffff5f54753240000000c4848c6c40f4ffffdfcd743240040000848c8c6c40f5ffff9f46743240fcfffff3938c6c40feffff1fbe733240f2ffff0b9b8c6c40060000e034733240f5ffffdba18c6c40030000a0aa723240f6ffff53a88c6c40000000a01f7232400d00007cae8c6c400e0000a093713240f6ffff53b48c6c40ffffffdf06713240ffffffd3b98c6c400b00006079703240fbffff03bf8c6c40faffff1feb6f3240f5ffffdbc38c6c40050000205c6f324006000064c88c6c40fcffff9fcc6e3240f1ffff93cc8c6c40fcffff9f3c6e3240f4ffff73d08c6c4005000020ac6d3240f3fffffbd38c6c400d0000e01a6d3240f0ffff2bd78c6c400b000060896c32400d000004da8c6c40f6ffff5ff76b3240fbffff8bdc8c6c40f3ffff1f656b3240090000bcde8c6c40f9ffff5fd26a3240f1ffff93e08c6c40000000a03f6a3240faffff13e28c6c40f2ffff5fac693240f7ffff43e38c6c400100002019693240f1ffff1be48c6c40f4ffffdf85683240f1ffff93e48c6c40f9ffff5ff2673240090000bce48c6c40f5ffff9f5e673240fbffff8be48c6c40faffff1fcb6632400400000ce48c6c40000000a037663240f0ffff2be38c6c40f2ffff5fa4653240f3fffffbe18c6c40f8ffffdf10653240fdffff6be08c6c40f4ffffdf7d643240fbffff8bde8c6c40faffff1feb633240f6ffff53dc8c6c400000006058633240080000ccd98c6c40feffff1fc6623240feffffe3d68c6c40f2ffff5f346232400a0000acd38c6c40030000a0a2613240f1ffff1bd08c6c40f9ffff9f11613240efffff3bcc8c6c4001000020816032400d000004c88c6c4001000020f15f324005000074c38c6c40f9ffff9f615f3240f1ffff93be8c6c400d0000e0d25e3240feffff5bb98c6c40fcffff9f445e3240ffffffd3b38c6c4008000020b75d3240f3fffffbad8c6c40030000a02a5d3240080000cca78c6c40f5ffff9f9e5c32401100004ca18c6c400e0000a0135c32400d00007c9a8c6c400b000060895b3240feffff5b938c6c40f7ffff1f005b32400f0000e48b8c6c40090000e0775a32400b000024848c6c400a0000a0f0593240faffff137c8c6c40f9ffff5f6a5932400a0000ac738c6c40f3ffff1fe5583240fbffff036b8c6c4001000020615832400d000004628c6c4007000060de573240090000bc588c6c40060000e05c573240f9ffff234f8c6c40f2ffff5fdc563240f7ffff43458c6c40fdffff5f5d5632400200001c3b8c6c40000000a0df553240f9ffffab308c6c40faffff1f63553240060000ec258c6c40f7ffff1fe8543240f4ffffeb1a8c6c40f5ffff9f6e543240faffff9b0f8c6c40f5ffff9ff65332400400000c048c6c40090000e07f533240f8ffff33f88b6c400d0000e00a533240f1ffff1bec8b6c40000000a097523240f7ffffbbdf8b6c40070000a0255232400200001cd38b6c40070000a0b5513240efffff3bc68b6c4008000020475132400200001cb98b6c40f9ffff5fda503240010000b4ab8b6c40f6ffff5f6f503240faffff139e8b6c400700006006503240efffff3b908b6c40ffffffdf9e4f32400b000024828b6c400b000060394f3240080000cc738b6c40f4ffffdfd54e32400000003c658b6c4005000020744e3240f4ffff73568b6c40f2ffff5f144e324005000074478b6c4007000060b64d324009000044388b6c40030000a05a4d3240100000d4288b6c40f8ffffdf004d32400a000034198b6c4001000020a94c3240f5ffff63098b6c400e0000a0534c3240f5ffff63f98a6c40f7ffff1f004c3240f0ffff2be98a6c40f5ffff9fae4b3240f6ffffcbd88a6c40f6ffff5f5f4b3240f8ffff33c88a6c40f9ffff5f124b3240fcffff7bb78a6c40000000a0c74a3240fbffff8ba68a6c40ffffffdf7e4a3240fcffff7b958a6c400a0000a0384a324009000044848a6c40f2ffff5ff4493240070000dc728a6c40030000a0b249324007000054618a6c40faffff1f73493240f0ffffa34f8a6c40feffff1f36493240ffffffd33d8a6c4004000060fb4832400f0000e42b8a6c400d0000e0c2483240080000cc198a6c40060000e08c483240faffff9b078a6c4001000020594832401100004cf5896c40090000e027483240070000dce2896c4001000020f94732401000005cd0896c40060000e0cc473240f7ffffbbbd896c400d0000e0a2473240fbffff03ab896c400e0000a07b473240f8ffff3398896c40f5ffff9f564732401100004c85896c400500002034473240f6ffff5372896c40f2ffff5f144732401100004c5f896c40ffffffdff6463240f8ffff334c896c4005000020dc463240f2ffff0b39896c400e0000a0c3463240ffffffd325896c40f4ffffdfad463240f1ffff9312896c40030000a09a463240f7ffff43ff886c400c0000208a463240fcfffff3eb886c40fbffffdf7b463240f1ffff93d8886c4000000060704632400a000034c5886c40f6ffff5f67463240080000ccb1886c40f8ffffdf604632401000005c9e886c40f3ffff1f5d463240fe | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14144 + 249 | Pangboche | \x0001c89901001bf6df6511536c4069a19d97424731401bf6df6511536c4069a19d97424731407c010000001bf6df6511536c4069a19d9742473140fe | \x0001c8990100f9ffffab52506c40faffff1f63313140110000c411566c4000000060485d31407c030000000100000069010000fbffff033f536c40fbffffdf63313140f8ffff3332536c40faffff1f63313140feffff5b25536c40fbffffdf63313140fbffff8b18536c40f5ffff9f66313140010000b40b536c400d0000e06a313140f4ffffebfe526c40f8ffffdf70313140f1ffff1bf2526c400000006078313140feffff5be5526c40020000e0813131400b00009cd8526c40060000e08c313140f5ffffdbcb526c40020000e099313140f0ffff2bbf526c4000000060a831314004000084b2526c4000000060b8313140060000eca5526c40f9ffff5fca3131400700005499526c40f4ffffdfdd313140f6ffffcb8c526c40faffff1ff3313140f6ffff5380526c40020000e009323140060000ec73526c40f9ffff5f223231400c00008c67526c40fcffff9f3c3231400000003c5b526c400a0000a058323140fbffff034f526c40feffff1f76323140100000d442526c40f3ffff1f95323140090000bc36526c40f4ffffdfb5323140efffffb32a526c40f7ffff1fd8323140000000c41e526c4005000020fc323140f4ffffeb12526c40f9ffff9f21333140f9ffff2307526c400a0000a048333140fcffff7bfb516c400b000060713331400f0000e4ef516c400e0000a09b33314006000064e4516c40f6ffff5fc7333140fbffff03d9516c40fcffff9ff4333140f7ffffbbcd516c400400006023343140f1ffff93c2516c400e0000a053343140f3ffff83b7516c40fdffff5f85343140f1ffff93ac516c400a0000a0b8343140f7ffffbba1516c40f3ffff1fed343140f2ffff0b97516c400400006023353140f4ffff738c516c400d0000e05a3531400d00000482516c40fbffffdf93353140010000b477516c40feffff1fce353140f3ffff836d516c40020000e009363140fcffff7b63516c40ffffffdf463631400300009459516c40f3ffff1f85363140080000cc4f516c40060000e0c4363140f8ffff3346516c40f4ffffdf05373140090000bc3c516c40090000e0473731400f00006c33516c40040000608b373140090000442a516c40f7ffff1fd0373140f7ffff4321516c40feffff1f16383140fdffff6b18516c40f3ffff1f5d383140110000c40f516c40fdffff5fa53831400000003c07516c40ffffffdfee383140f4ffffebfe506c400b00006039393140090000bcf6506c40f3ffff1f85393140000000c4ee506c40020000e0d1393140f4ffffebe6506c40000000a01f3a31401100004cdf506c40070000606e3a3140ffffffd3d7506c40feffff1fbe3a3140f1ffff93d0506c40080000200f3b3140fcffff7bc9506c40f8ffffdf603b3140f1ffff93c2506c4004000060b33b3140f5ffffdbbb506c4008000020073c3140feffff5bb5506c400e0000a05b3c3140fbffff03af506c40f8ffffdfb03c3140feffffe3a8506c4008000020073d31400e0000f4a2506c40f4ffffdf5d3d31400000003c9d506c40070000a0b53d3140010000b497506c40feffff1f0e3e31400600006492506c40f6ffff5f673e3140f7ffff438d506c400b000060c13e3140f6ffff5388506c40fbffffdf1b3f3140f0ffffa383506c4008000020773f3140f9ffff237f506c40faffff1fd33f3140100000d47a506c40f6ffff5f2f403140000000c476506c40f2ffff5f8c403140feffffe372506c40020000e0e94031400000003c6f506c40090000e047413140080000cc6b506c4007000060a6413140f1ffff9368506c40fdffff5f054231400300009465506c40fcffff9f64423140f6ffffcb62506c40f2ffff5fc4423140efffff3b60506c40fcffff9f244331400f0000e45d506c40060000e084433140110000c45b506c40070000a0e5433140f5ffffdb59506c40f5ffff9f46443140f8ffff3358506c40090000e0a7443140090000bc56506c400b00006009453140fcffff7b55506c400d0000e06a4531400d00007c54506c40fcffff9fcc453140010000b453506c40f5ffff9f2e463140f9ffff2353506c400000006090463140f6ffffcb52506c40f9ffff5ff2463140f9ffffab52506c40fcffff9f54473140000000c452506c40f5ffff9fb64731400200001c53506c400a0000a0184831400a0000ac53506c40030000a07a483140fdffff6b54506c40fcffff9fdc4831400500007455506c40070000603e493140f9ffffab56506c40090000e09f493140f1ffff1b58506c400b000060014a3140110000c459506c40030000a0624a31400a0000ac5b506c400e0000a0c34a3140080000cc5d506c40f2ffff5f244b3140f1ffff1b60506c40fcffff9f844b3140f9ffffab62506c40060000e0e44b31400500007465506c40fcffff9f444c3140f4ffff7368506c40fbffffdfa34c3140f0ffffa36b506c400d0000e0024d31400c0000146f506c400b000060614d3140efffffb372506c40f6ffff5fbf4d3140f1ffff9376506c40060000e01c4e3140020000a47a506c40020000e0794e3140f4ffffeb7e506c4007000060d64e31400f00006c83506c40f9ffff5f324f3140f1ffff1b88506c40070000a08d4f3140fbffff038d506c40f7ffff1fe84f31400b00002492506c400c000020425031400500007497506c40040000609b503140050000fc9c506c40fbffffdff3503140efffffb3a2506c400e0000a04b513140020000a4a8506c40030000a0a2513140000000c4ae506c40f8ffffdff85131400c000014b5506c40feffff1f4e52314003000094bb506c40030000a0a2523140ffffff4bc2506c4007000060f6523140f0ffff2bc9506c40010000204953314009000044d0506c400d0000e09a5331400c00008cd7506c400e0000a0eb533140050000fcde506c400e0000a03b5431400b00009ce6506c40f9ffff5f8a543140f4ffff73ee506c40f7ffff1fd8543140fdffff6bf6506c40060000e024553140f1ffff93fe506c400a0000a070553140f4ffffeb06516c4004000060bb5531400f00006c0f516c40fcffff9f04563140f1ffff1b18516c40f3ffff1f4d5631400e0000f420516c400500002094563140fcfffff329516c400c000020da5631400200001c33516c40ffffffdf1e573140fdffff6b3c516c40f9ffff5f625731400f0000e445516c40fcffff9fa4573140fcffff7b4f516c40070000a0e5573140f7ffff4359516c40fdffff5f25583140f0ffff2b63516c40fbffffdf635831400a0000346d516c40f8ffffdfa0583140f5ffff6377516c40fcffff9fdc583140010000b481516c40ffffffdf165931400100002c8c516c40090000e04f593140000000c496516c40f6ffff5f8759314005000074a1516c40070000a0bd593140ffffff4bac516c40f9ffff5ff25931400000003cb7516c40070000a0255a3140ffffff4bc2516c40f6ffff5f575a3140fcffff7bcd516c40000000a0875a3140000000c4d8516c4007000060b65a31400b000024e4516c40fbffffdfe35a3140f0ffffa3ef516c40000000a00f5b31400000003cfb516c40020000e0395b3140f4ffffeb06526c40f9ffff5f625b3140efffffb312526c40f9ffff9f895b3140f1ffff931e526c4008000020af5b3140040000842a526c40faffff1fd35b3140fbffff8b36526c40fdffff5ff55b3140020000a442526c40feffff1f165c3140100000d44e526c40fdffff5f355c31400c0000145b526c400d0000e0525c3140f5ffff6367526c40f5ffff9f6e5c3140110000c473526c40f8ffffdf885c3140f8ffff3380526c400b000060a15c3140efffffb38c526c4000000060b85c31400000003c99526c40070000a0cd5c3140ffffffd3a5526c4001000020e15c3140f4ffff73b2526c40faffff1ff35c31400200001cbf526c40faffff1f035d3140080000cccb526c40f9ffff9f115d3140fbffff8bd8526c40f5ffff9f1e5d31401100004ce5526c40f9ffff9f295d3140faffff13f2526c40faffff1f335d3140feffffe3fe526c40030000a03a5d3140010000b40b536c400a0000a0405d3140fbffff8b18536c40060000e0445d3140f5ffff6325536c40000000a0475d3140efffff3b32536c4000000060485d31400c0000143f536c40000000a0475d3140060000ec4b536c40060000e0445d3140090000bc58536c400a0000a0405d31400c00008c65536c40030000a03a5d31401000005c72536c40faffff1f335d3140f9ffff237f536c40f9ffff9f295d3140060000ec8b536c40070000601e5d3140020000a498536c40f9ffff9f115d314007000054a5536c40faffff1f035d31400d000004b2536c400d0000e0f25c3140020000a4be536c4001000020e15c31400000003ccb536c40070000a0cd5c3140110000c4d7536c4000000060b85c3140efffff3be4536c400b000060a15c3140f9ffffabf0536c40f8ffffdf885c3140f2ffff0bfd536c40f5ffff9f6e5c3140feffff5b09546c400d0000e0525c3140faffff9b15546c40f3ffff1f355c3140080000cc21546c40feffff1f165c31400f0000e42d546c40fdffff5ff55b3140060000ec39546c40faffff1fd35b31400f0000e445546c4008000020af5b3140f7ffffbb51546c40f9ffff9f895b3140f3ffff835d546c40f9ffff5f625b31400a00003469546c40f9ffff9f395b3140f6ffffcb74546c40f6ffff5f0f5b3140ffffff4b80546c400e0000a0e35a31400a0000ac8b546c4007000060b65a31400e0000f496546c40000000a0875a31400b000024a2546c40f6ffff5f575a31400a000034ad546c40fdffff5f255a31400b000024b8546c400c000020f2593140050000fcc2546c40fdffff5fbd593140010000b4cd546c40f6ffff5f8759314009000044d8546c40090000e04f593140090000bce2546c40ffffffdf16593140f2ffff0bed546c40f2ffff5fdc5831400000003cf7546c400a0000a0a05831401100004c01556c400e0000a0635831400a0000340b556c40fdffff5f255831400e0000f414556c40070000a0e5573140f1ffff931e556c40fcffff9fa45731400400000c28556c40f9ffff5f62573140feffff5b31556c40ffffffdf1e573140040000843a556c400c000020da563140fcffff7b43556c400500002094563140f6ffff534c556c40060000e04c563140fbffff0355556c40fcffff9f04563140f3ffff835d556c40faffff1fbb553140f5ffffdb65556c4000000060705531400d0000046e556c40060000e0245531400d00000476556c40f7ffff1fd8543140ffffffd37d556c400c0000208a5431400500007485556c40040000603b543140feffffe38c556c400e0000a0eb5331400100002c94556c40030000a09a533140f7ffff439b556c40f8ffffdf485331400b000024a2556c40feffff1ff6523140070000dca8556c40030000a0a2523140feffff5baf556c40f4ffffdf4d5231400a0000acb5556c400a0000a0f8513140080000ccbb556c40f9ffff5fa2513140f7ffffbbc1556c40040000604b51314005000074c7556c400e0000a0f3503140050000fccc556c40faffff1f9b503140ffffff4bd2556c40020000e0415031400f00006cd7556c40090000e0e74f3140f6ffff53dc556c40fdffff5f8d4f3140fbffff03e1556c400c000020324f3140f3ffff83e5556c40feffff1fd64e3140080000cce9556c40f9ffff9f794e3140f5ffffdbed556c40fcffff9f1c4e3140010000b4f1556c4008000020bf4d3140feffff5bf5556c4001000020614d3140000000c4f8556c40030000a0024d3140f3fffffbfb556c400e0000a0a34c3140050000fcfe556c40f2ffff5f444c3140110000c401566c40fcffff9fe44b3140ffffff4b04566c40f2ffff5f844b3140020000a406566c4005000020244b3140000000c408566c4004000060c34a3140020000a40a566c40f9ffff5f624a3140f6ffff530c566c4001000020014a3140110000c40d566c40000000a09f493140050000fc0e566c40feffff1f3e493140f3fffffb0f566c40f2ffff5fdc483140000000c410566c40f9ffff5f7a4831400700005411566c400000006018483140f0ffffa311566c4007000060b6473140110000c411566c40f2ffff5f54473140f0ffffa311566c40f9ffff5ff24631401100004c11566c40f7ffff1f90463140090000bc10566c40070000602e463140060000ec0f566c40f2ffff5fcc453140f4ffffeb0e566c40030000a06a4531400a0000ac0d566c400100002009453140efffff3b0c566c40000000a0a7443140fbffff8b0a566c400700006046443140020000a408566c40fdffff5fe54331400400008406566c40fcffff9f844331400100002c04566c40f2ffff5f24433140faffff9b01566c4005000020c4423140100000d4fe556c40f2ffff5f64423140ffffffd3fb556c40f3ffff1f054231400b00009cf8556c40feffff1fa6413140f0ffff2bf5556c40000000a047413140f3ffff83f1556c40f9ffff9fe9403140f0ffffa3ed556c40050000208c40314003000094e9556c40080000202f403140f7ffff43e5556c400d0000e0d23f3140000000c4e0556c40ffffffdf763f3140faffff13dc556c400e0000a01b3f3140f9ffff23d7556c4001000020c13e31400d000004d2556c4008000020673e3140efffffb3cc556c40feffff1f0e3e3140f0ffff2bc7556c40070000a0b53d314005000074c1556c40f4ffffdf5d3d3140f3ffff83bb556c40ffffffdf063d3140f5ffff63b5556c400a0000a0b03c3140f2ffff0baf556c40040000605b3c3140fbffff8ba8556c40ffffffdf063c3140ffffffd3a1556c4004000060b33b3140f4ffffeb9a556c400a0000a0603b3140ffffffd393556c40ffffffdf0e3b3140f1ffff938c556c40feffff1fbe3a31400200001c85556c40feffff1f6e3a3140050000747d556c40f6ffff5f1f3a3140f0ffffa375556c40f9ffff9fd13931400a0000ac6d556c40060000e084393140fcffff7b65556c400b00006039393140f9ffff235d556c40f5ffff9fee383140020000a454556c40fdffff5fa5383140f3fffffb4b556c40f3ffff1f5d383140f9ffff2343556c40f4ffffdf153831400b0000243a556c40f7ffff1fd0373140050000fc30556c40040000608b3731400a0000ac27556c40090000e047373140f8ffff331e556c40070000a005373140f1ffff9314556c40fcffff9fc4363140100000d40a556c40060000e084363140f4ffffeb00556c40f5ffff9f46363140feffffe3f6546c40f9ffff9f09363140efffffb3ec546c40f4ffffdfcd35314006000064e2546c400e0000a093353140060000ecd7546c40030000a05a353140feffff5bcd546c40faffff1f23353140020000a4c2546c40f3ffff1fed343140ffffffd3b7546c4000000060b8343140feffffe3ac546c40f3ffff1f85343140ffffffd3a1546c400400006053343140020000a496546c40faffff1f23343140feffff5b8b546c40f2ffff5ff4333140f3fffffb7f546c4008000020c73331400400008474546c40040000609b333140f4ffffeb68546c4001000020713331400000003c5d546c400a0000a048333140fcffff7b51546c40f9ffff9f21333140faffff9b45546c40fbffffdffb3231400a0000ac39546c40f7ffff1fd83231400a0000ac2d546c40070000a0b53231400c00008c21546c40f3ffff1f95323140f5ffff6315546c40f4ffffdf75323140f9ffff2309546c400000006058323140070000dcfc536c40fcffff9f3c3231400d00007cf0536c40f9ffff5f223231400400000ce4536c40020000e00932314003000094d7536c40faffff1ff3313140f2ffff0bcb536c40f4ffffdfdd3131400d00007cbe536c40f9ffff5fca313140f5ffffdbb1536c4000000060b83131400a000034a5536c40f7ffff1fa83131400400008498536c40f9ffff9f99313140080000cc8b536c40060000e08c313140f2ffff0b7f536c40020000e0813131400900004472536c400000006078313140fcffff7b65536c40f8ffffdf70313140f9ffffab58536c400d0000e06a313140f5ffffdb4b536c40f5ffff9f66313140fbffff033f536c40fbffffdf63313140fe | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14145 + 301 | Nix Olympica | \x0001c89901000000000000c06c402c095fc797c833400000000000c06c402c095fc797c833407c010000000000000000c06c402c095fc797c83340fe | | 01-01-1958 | al | http://planetarynames.wr.usgs.gov/Feature/4314 + 1849 | Hermes Patera | \x0001c89901000ad7a3703d526c4014ae47e17a5432400ad7a3703d526c4014ae47e17a5432407c010000000ad7a3703d526c4014ae47e17a543240fe | \x0001c8990100160000c02c486c4073ffffff271132406e0000c0715d6c402dffffffab9b32407c030000000100000027000000c60000c0e0486c4073ffffff271132409a00004043486c402dffffffbb223240160000c02c486c4073ffffff793732409a0000807b486c40e7feffff294b32408400006032486c40e7feffffd45432406e0000c059486c40e7feffff7f5e3240160000c03a496c402dffffff1b77324042000040404b6c4073ffffff47873240beffffbf534e6c40e7feffffef93324016000080834f6c400affffff279832406e0000c0c9506c402dffffff439a3240beffffbf8b526c402dffffffab9b324042000040cc556c402dffffff0b963240160000c096566c40baffffffd39132406e0000c0d1576c4073ffffff178a32409a00004023596c40baffffffc38332406e0000c0a15a6c402dffffff8b7f3240beffff7fd15b6c40baffffff157d3240000000009c5c6c4096ffffffdd78324042000040d45c6c4073ffffff97733240eaffff3f015d6c402dffffff0b69324092ffff3f2e5d6c40e7feffff4f6132406e0000c0715d6c402dffffff8b523240eaffff3f015d6c40baffffff434032409a000040f35b6c4073ffffff173032409a0000408b5a6c402dffffff8b253240160000c066596c402dffffff1b1d3240eaffff3fc9586c402dffffff4b1a3240160000c04a576c40baffffff831e3240160000c0e2556c40baffffff232432406e00004064546c402dffffffa727324000000040cf526c4050ffffff7d24324092ffff3fee516c4073ffffff371f32409a000040b3506c4073ffffffc7163240160000c08e4f6c4073ffffff27113240c60000c0804e6c40e7feffff5f153240c60000c0644c6c40baffffff131632409a0000405f4a6c4073fffffff7133240c60000c0e0486c4073ffffff27113240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15690 + 1688 | Olympus Rupes | \x0001c8990100ee68117fef4d6c408327cb1fe7663240ee68117fef4d6c408327cb1fe76632407c01000000ee68117fef4d6c408327cb1fe7663240fe | \x0001c8990100000000a47b9c6b4000000040d1822b400000000c43dd6c40000000e0144737407c020000004c0000000000009cbe6d6c40000000e01fef36400000008cf97d6c40000000a0eba736400000004c108b6c4000000060486d3640000000a4d2906c4000000060c64b3640000000e488956c40000000608319364000000074f59e6c400000006083193640000000a4e6b36c40000000205ebd35400000009421c46c40000000605a7a35400000000476cb6c4000000020e74335400000001c3ecc6c400000002045163540000000dcc6c66c40000000203b8e3440000000ccf8d66c40000000e0cb2e3340000000f4b0db6c40000000600e803240000000f4b0db6c40000000e0f70e3240000000f4b0db6c40000000a0d6f53140000000fc36dc6c400000002088fa30400000000c43dd6c40000000e092a23040000000b480d76c4000000060bf6330400000009468d56c40000000200d3e30400000005cbed16c40000000c012f62f40000000349ace6c40000000c04da22f400000000476cb6c40000000c024032f400000006c83c16c400000004003ea2e4000000064a1ba6c40000000c0db472e400000008448b16c40000000406e792d40000000ec55a76c4000000040a5e22c4000000044d19b6c40000000c05e6d2c40000000ac58916c40000000c099192c400000000ce0866c40000000c0dc4b2c40000000544f7a6c40000000c0dc4b2c400000003cf0666c40000000c017f82b400000008c6b5b6c4000000040b7ef2b40000000e4e64f6c40000000c099192c4000000024d0426c40000000c0318b2b40000000a4e9396c4000000040d1822b400000001cc8316c40000000c04ac32b40000000ac842c6c4000000040fc1d2c400000000c2a1e6c40000000406e792d40000000b467186c40000000406e792d40000000fcd60b6c4000000040a9252d400000004446ff6b40000000c0ef9a2d40000000fc48e96b40000000c079422e40000000ec6fd66b400000004081c82e400000006c0fce6b40000000c0e1d02e400000007cd4bd6b40000000c0e1d02e40000000d44fb26b40000000c0e9562f40000000941fae6b40000000205b1830400000006cfbaa6b40000000e053b330400000007c8dac6b4000000060a91331400000001439a56b40000000606e673140000000a47b9c6b40000000a01a8831400000009cd89c6b40000000e084d831400000006491a46b400000006051c33140000000bcbdb06b4000000060e19d31400000005cbcbb6b400000002028133240000000bc04c26b4000000020609d32400000006cc8bc6b40000000e033dc3240000000f467b46b40000000a0b9403340000000ece1b36b40000000a0ae983340000000248cb76b4000000060772f3440000000845abe6b40000000e03fc63440000000c48ac26b4000000020e743354000000084a1cf6b40000000e0afda354000000074dcdf6b40000000a03982364000000044ffed6b40000000e01fef3640000000e4fdf86b40000000a062213740000000645e016c40000000a0a1103740000000dcbe096c40000000a0e0ff3640000000a45b176c40000000e01fef364000000024bc1f6c40000000208fe23640000000ac28296c40000000e01fef36400000007c4b376c40000000e0100437400000006c86476c40000000e0922537400000001c91536c40000000e014473740000000ecb3616c4000000020021937400000009cbe6d6c40000000e01fef3640fe | 01-01-1976 | ru | http://planetarynames.wr.usgs.gov/Feature/4454 + 1847 | Zeus Patera | \x0001c89901000ad7a3703d626c40a4703d0ad76332400ad7a3703d626c40a4703d0ad76332407c010000000ad7a3703d626c40a4703d0ad7633240fe | \x0001c8990100dc000080cb4f6c40b000000026d731408c010080ad6d6c406a0000000ae332407c0300000001000000350000008c01008025506c40b0000000e6ac3240dc0000807f506c40b000000056b5324034010080ba516c406a0000001ac43240dc00008003546c406a0000002ad232408400008000576c406a0000009ada324008010000415a6c406a0000000ae33240dc000080275d6c406a0000000ae3324008010000e15f6c406a0000003ae032403401008032616c40b000000086df324034010080ca5f6c406a000000fad43240b00000005a5f6c40b000000036c63240dc000080f75f6c4023000000eeb3324008010000fd616c40b0000000a6a1324008010000cd646c40f6000000b29532403401008086676c406a0000007a913240dc000000b9696c40b00000001a97324084000080b06a6c40f6000000f2a03240340100800a6b6c4023000000aea83240b0000000b66c6c40b0000000669632408c010080ad6d6c40230000007e7e324084000080806d6c40f6000000b268324084000080cc6c6c406a000000ca50324008010000896c6c406a0000004a3a324060010000f46a6c40f6000000921f32408c01008075696c406a000000da04324034010080d2666c406a0000002af13140b0000000fa646c40f600000052e731408c01008021636c406a0000004ae03140b00000000e606c40230000008ed83140dc000080db5d6c40b000000026d73140080100005d5c6c40b000000026d7314008010000115d6c406a0000004ae03140b00000003e5d6c40f6000000f2ec314060010000e45c6c40b0000000e6f8314058000000035c6c40230000008e053240dc000080575a6c406a0000001a103240dc000080ef586c40230000003e19324060010000c85a6c40f60000000228324034010080465c6c40f6000000b23b3240dc000080275d6c406a000000ca503240dc000080735c6c40b00000009666324060010000305c6c40f600000092793240580000009b5a6c40f6000000028232408c0100802d576c406a000000da8b324058000000af556c40f6000000b2953240dc00008003546c40230000006e9d324058000000df526c40f6000000229e3240b00000001a546c406a0000002aa5324058000000af556c40f600000092a6324034010080d6536c40f600000062a932408400008014526c40b000000076a43240dc000080cb4f6c40b000000046a732408c01008025506c40b0000000e6ac3240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15689 + 1848 | Athena Patera | \x0001c8990100f6285c8fc2656c403d0ad7a370bd3240f6285c8fc2656c403d0ad7a370bd32407c01000000f6285c8fc2656c403d0ad7a370bd3240fe | \x0001c899010013010060aa606c40e7feffff8f993240e70000e0986a6c4073ffffff47e132407c030000000100000014000000ef0100e0ed606c4050ffffff19c432403f0100e047616c4096ffffffa5ce3240050200a0f0616c4096ffffff15d73240050200a0a4626c400affffff1dde3240d901002023646c4073ffffff47e13240ad0100a0a1656c40baffffff93e03240550100a036676c40baffffffc3dd32403f0100e003696c4073ffffff37d33240290100201d6a6c40e7feffff8fc6324013010060826a6c40e7feffff4fbb3240e70000e0986a6c400affffff1db132403f0100e0b7696c4050fffffff9a73240130100601a696c402dffffff7b9e3240d9010020a7676c40e7feffff8f993240550100a0ce656c40e7feffff8f9932403f0100e063636c40baffffffe39f3240fd0000a0c3616c40e7feffff6faa324081010020cc606c40ddffffffa1b4324013010060aa606c4050ffffff79be3240ef0100e0ed606c4050ffffff19c43240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15693 + 1850 | Apollo Patera | \x0001c899010066666666664e6c40713d0ad7a3f0314066666666664e6c40713d0ad7a3f031407c0100000066666666664e6c40713d0ad7a3f03140fe | \x0001c89901007e0200c08f486c403effffffdac73140d60200c056546c40f8feffff4e1732407c0300000001000000160000001002000022496c406bfeffffe6e83140c0020000c8486c4062ffffff48f031407e0200c08f486c40f8feffff2efb314094020080de486c40b2feffff2207324002030040b4496c406bfeffff1613324052020040764b6c40f8feffff4e17324018030000d34c6c40f8feffff4e17324052020040fa4e6c401bffffffbc123240d60200c0d2506c408ffeffffb40b3240d60200c03a526c408ffeffff140632406802000035546c408ffeffff64f23140d60200c056546c40d5feffffd0e0314052020040e6536c40f8feffff9ed631407e0200c0cf536c4062ffffff88ce3140aa02004005536c406bfefffff6c93140aa020040e9506c403effffffdac73140d60200c0b64e6c40b2feffffe2ce314094020080164d6c406bfeffff36d53140180300001f4c6c40b2feffff52d73140ec020080cd4a6c401bffffff4cdd31403c020080bf496c406bfeffff46e331401002000022496c406bfeffffe6e83140fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15694 + 1851 | Olympus Paterae | \x0001c899010052b81e85eb596c4052b81e85eb51324052b81e85eb596c4052b81e85eb5132407c0100000052b81e85eb596c4052b81e85eb513240fe | \x0001c8990100080100002d446c4050ffffffe9b8314084000080a06e6c4096ffffffc5ea32407c030000000100000044000000a8ffffff98446c40ddfffffff1733240a8ffffff4c456c406a0000006a8332400000000088466c4096fffffff58d32407cffff7f7f476c4023000000ce97324084000080c8496c40230000003ea03240b0000000ce4b6c40ddffffff91a632402c000080794d6c4096ffffff45a73240b00000009e4e6c4096ffffff75a43240d4ffff7fc24f6c406a0000003ab332407cffff7f57516c406a0000004ac13240a8ffffffa8526c406a0000005acf3240b0000000f2546c40230000007ed832408400008024576c40ddffffffd1de32407cffff7f7b5a6c4096ffffff25e5324000000000545c6c40230000005ee9324008010000e55e6c400affffff8de63240dc00008063606c400affffff8de632406001000088616c400affffffbde3324084000080ac626c4096fffffff5e732408c01008041646c4096ffffffc5ea324058000000fb666c400affffff5de932405800000017696c4050ffffff39e0324060010000ac6a6c4096ffffff45d4324058000000e76b6c40ddffffff81c5324060010000146c6c400affffff5dbc3240f20000c0356c6c4050ffffff36b6324084000020306c6c4096ffffff4ab132408c010080fd6b6c4096ffffffe5ac324034010080de6c6c4096ffffffd59e3240b0000000d66d6c400affffff2d923240dc000080736e6c40ddffffff317f324084000080a06e6c40ddffffff21713240080100005d6e6c4050ffffffa96132408c010080196e6c4096ffffffe5523240b0000000d66d6c40ddfffffff1463240580000004f6d6c4096fffffff5333240340100802a6c6c400affffffdd1e3240b0000000066b6c4050ffffff490d324008010000256a6c400affffffedff31406001000090686c4096ffffff45f331408c01008011676c400affffff6de931405800000093656c40ddffffffe1de3140b0000000fe636c40ddffffff41d93140b00000002e616c4050ffffff39d231408c010080555f6c400affffff4dcd314084000080585c6c40ddffffffd1d0314060010000345b6c400affffff7dca3140dc0000800f5a6c400affffffddc43140dc000080f3576c4096ffffffd5bd3140b0000000ee556c4050ffffffb9bb31408c01008015546c40ddffffff21bd3140b00000006a526c400affffff6dbc3140340100800a506c4050ffffffe9b83140080100009d4c6c400affffff0dc23140340100806a4a6c4050ffffffc9c931408c01008089496c400affffffedd2314084000080a8486c4050ffffffd9d7314060010000d0466c4050ffffffe9e53140840000808c466c400affffff7df731405800000057476c40ddffffff11093240840000808c466c4050ffffffb915324084000080d8456c4050ffffffc9233240340100807e456c4050ffffff092f3240b0000000c2456c4050ffffffa9343240b00000000e456c400affffff9d4032408400008070446c400affffff7d513240080100002d446c4096ffffffc5633240a8ffffff98446c40ddfffffff1733240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15695 + 1870 | Dionysus Patera | \x0001c8990100713d0ad7a3586c40f6285c8fc2f53140713d0ad7a3586c40f6285c8fc2f531407c01000000713d0ad7a3586c40f6285c8fc2f53140fe | \x0001c89901002c00008045516c40ddffffff61c831402c000080855c6c40ddffffff612232407c0300000001000000140000002c00008045516c40ddffffffe10b32400000000010526c40b0000000061532408400008034536c40b0000000761d3240840000809c546c40ddffffff6122324000000000fc566c406a0000002a1e324058000000eb586c40b0000000d6173240a8ffffffac5a6c40230000002e0b3240a8ffffff145c6c40230000001efd31402c000080855c6c40ddffffffc1ef314000000000e85b6c40ddffffffe1de314000000000805a6c40b000000056d43140dc000080f3576c406a0000009acc3140b0000000ee556c40ddffffff31cb31402c000080c9546c40b000000016c93140a8ffffffa4536c40ddffffff61c83140000000002c546c40ddffffff41d93140000000002c546c40ddffffff21ea314084000080e8536c40b0000000e6f831405800000097526c40230000008e0532402c00008045516c40ddffffffe10b3240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15692 + 1871 | Hera Patera | \x0001c89901008fc2f5285c476c4033333333337332408fc2f5285c476c4033333333337332407c010000008fc2f5285c476c403333333333733240fe | \x0001c8990100370000607d456c4000000000203732404d0000a0254e6c40ddffffffc79d32407c03000000010000001100000063000060b8466c40ddffffff813e324037000020cc456c4000000000ec4c3240bb0000209f456c4096ffffffdf583240370000607d456c4096ffffff196a3240130100605e466c406a000000707d3240a50000e0af476c40000000008e8c3240370000a0474a6c4096ffffff439a32404d000020204c6c40ddffffffc79d32404d0000a0254e6c4000000000609c324013010060b24c6c4023000000fe943240370000e08d4b6c40000000009c8d3240630000603c4a6c400000000010833240a50000a00c496c40ddffffff91793240bb000060a7486c40230000009e6d3240bb000060f3476c4096ffffff255e3240dfffffdfaf476c40000000002037324063000060b8466c40ddffffff813e3240fe | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15691 +(12 rows) + +--Testcase 67: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE geometry; +--Testcase 68: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE geometry; +--Testcase 69: +SELECT * FROM "♂"; + id | UAI | ⌖ | geom | t₀ | class | URL +------+-----------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------+------------------------------------------------- + 991 | Olympus Mons | 0101000020C89901004F337DDD51466C404135E6341BA73240 | 0103000020C899010001000000470000000000008430F96B40000000A0D7543740000000144C076C4000000020F25237400000002C610A6C40000000A09790374000000094FF166C40000000E0F3973740000000846F196C40000000A016753740000000FC16226C40000000E0213D37400000008C85356C4000000020EC6F3740000000F413476C400000006040A93740000000AC82516C40000000A05AA73740000000F4E3736C40000000E0656F37400000004415866C40000000A0E9633740000000C418986C40000000A0E23F37400000001C079D6C4000000060C03137400000001C6EA76C40000000E0420137400000000CECB06C40000000E050C13640000000A4E9BB6C4000000020627136400000000CE7C76C40000000A072253640000000AC63D76C40000000E07EED3540000000A4DFE96C40000000A08EA53540000000D45BFB6C40000000E0AD1535400000007459066D40000000E0F0E133400000009C5BFC6C40000000203F7A3240000000A4DFE96C40000000E067BE31400000000401E76C4000000020F63731400000002CB3E56C400000002076C03040000000A426DF6C40000000208A5A3040000000C4A5DA6C40000000C0EBE42F400000007C24D46C40000000C0BCF42E400000006CA3CE6C4000000040B0B42E40000000B4A3C66C40000000405E992E40000000CCE1BF6C4000000040B1122E400000004C3AB76C40000000C0BB472D400000009C26AD6C40000000C00EC12C40000000CCA29F6C40000000C0B1342C4000000064B1976C40000000409BB52B40000000C457906C40000000C039AA2B400000009C2D8A6C40000000409DEC2B40000000B4137E6C400000004022DC2B4000000014906B6C40000000C01DC42B40000000D483616C40000000C0BDA02B40000000E40B566C40000000401AB42B40000000C41F4D6C40000000C004AE2B40000000FC07426C40000000C004442B400000000CDA386C40000000C0353C2B400000004C892A6C40000000C0AAF62A40000000348D186C40000000C09E2E2B400000007411056C40000000C08E762B400000009C18E46B400000004065362C40000000BC9DCC6B400000004044CE2C40000000BCA2B56B40000000C00AD62D40000000C4E8AD6B40000000C07ACE2E4000000034A4A96B4000000020360D3040000000F4C3A26B4000000020356930400000004CE2A26B4000000060C0A830400000006C52A66B4000000020B717314000000054E89F6B40000000A0BA523140000000E436986B40000000E01F6C31400000002C599A6B40000000603ED8314000000084E9A56B4000000020E0123240000000946AAB6B4000000060F88E3240000000E4EAAC6B40000000A0131B3340000000946AAB6B40000000A03BE7334000000014ACAD6B4000000020F79734400000003CEDB86B40000000A086673540000000BCF0CA6B4000000060AE333640000000E487E06B40000000E0AA453740000000C407EC6B40000000E025AB37400000006CE9EB6B40000000600BAD37400000009C6EF26B40000000600BAD3740000000D494F66B40000000E0E68A37400000008430F96B40000000A0D7543740 | 01-01-1973 | mo | http://planetarynames.wr.usgs.gov/Feature/4453 + 248 | Karzok | 0101000020C8990100452873B369886C406DF4308D4D673240 | 0103000020C899010001000000690100001000005C9E886C40F3FFFF1F5D4632400E0000F48A886C40FBFFFFDF5B463240F3FFFF8377886C40F3FFFF1F5D463240F1FFFF1B64886C40F8FFFFDF60463240EFFFFFB350886C40F6FFFF5F674632401100004C3D886C400000006070463240FCFFFFF329886C40FBFFFFDF7B4632400B00009C16886C400C0000208A4632401100004C03886C40030000A09A4632400400000CF0876C40F4FFFFDFAD463240100000D4DC876C40FBFFFFDFC34632400A0000ACC9876C4005000020DC463240F1FFFF93B6876C4008000020F74632400C00008CA3876C40F2FFFF5F14473240F1FFFF9390876C40F2FFFF5F34473240010000B47D876C40F5FFFF9F56473240FEFFFFE36A876C400E0000A07B4732400100002C58876C40FAFFFF1FA34732400C00008C45876C40060000E0CC473240FBFFFF0333876C400B000060F9473240F1FFFF9320876C40F7FFFF1F28483240090000440E876C400B00006059483240FAFFFF13FC866C40060000E08C4832400D000004EA866C400D0000E0C24832400400000CD8866C4004000060FB483240EFFFFF3BC6866C40FEFFFF1F36493240FBFFFF8BB4866C400400006073493240FBFFFF03A3866C400D0000E0B2493240F0FFFFA391866C40FCFFFF9FF44932400600006480866C400A0000A0384A3240070000546F866C40080000207F4A3240FDFFFF6B5E866C40000000A0C74A32400A0000AC4D866C40030000A0124B32400200001C3D866C40000000A05F4B3240EFFFFFB32C866C40FFFFFFDFAE4B3240040000841C866C40F7FFFF1F004C32400D00007C0C866C40FBFFFFDF534C3240F9FFFFABFC856C400B000060A94C3240F2FFFF0BED856C4001000020014D3240F0FFFFA3DD856C400D0000E05A4D3240FDFFFF6BCE856C40F5FFFF9FB64D32400F00006CBF856C40FCFFFF9F144E3240020000A4B0856C40F2FFFF5F744E3240F1FFFF1BA2856C40FEFFFF1FD64E3240110000C493856C40F9FFFF9F394F32400A0000AC85856C40080000209F4F3240080000CC77856C40F5FFFF9F065032400100002C6A856C40000000A06F503240F6FFFFCB5C856C40030000A0DA5032400A0000AC4F856C40F6FFFF5F47513240F6FFFFCB42856C40F4FFFFDFB55132400B00002436856C40FEFFFF1F26523240080000CC29856C40090000E0975232400A0000AC1D856C40040000600B533240F5FFFFDB11856C4000000060805332400900004406856C40FFFFFFDFF6533240050000FCFA846C40FFFFFFDF6E543240F3FFFFFBEF846C4000000060E85432400000003CE5846C400400006063553240F6FFFFCBDA846C40090000E0DF553240020000A4D0846C40070000A05D563240000000C4C6846C40FCFFFF9FDC563240F0FFFF2BBD846C40F3FFFF1F5D5732400F0000E4B3846C40F5FFFF9FDE573240F4FFFFEBAA846C40F9FFFF9F61583240EFFFFF3BA2846C40070000A0E5583240F5FFFFDB99846C40030000A06A593240110000C491846C40F8FFFFDFF05932400D0000048A846C40F7FFFF1F785A3240F1FFFF9382846C4000000060005B32400F00006C7B846C40F9FFFF9F895B32400B00009C74846C40FBFFFFDF135C3240F1FFFF1B6E846C40FFFFFFDF9E5C3240060000EC67846C400D0000E02A5D3240FAFFFF1362846C40000000A0B75D3240FBFFFF8B5C846C40F3FFFF1F455E32400700005457846C40FAFFFF1FD35E3240F4FFFF7352846C40020000E0615F3240060000EC4D846C400B000060F15F3240010000B449846C400B00006081603240080000CC45846C400C00002012613240EFFFFF3B42846C40FAFFFF1FA3613240FBFFFF033F846C40FCFFFF9F346232400B0000243C846C40F5FFFF9FC66232400300009439846C40F8FFFFDF58633240FEFFFF5B37846C4004000060EB633240FCFFFF7B35846C40070000607E643240FCFFFFF333846C400B00006011653240000000C432846C40FCFFFF9FA46532400F0000E431846C40F7FFFF1F38663240FEFFFF5B31846C400E0000A0CB663240F0FFFF2B31846C40080000205F6732400700005431846C40030000A0F2673240FFFFFFD331846C40FEFFFF1F86683240F9FFFFAB32846C40F9FFFF9F19693240FFFFFFD333846C40060000E0AC693240FEFFFF5B35846C40090000E03F6A32400A00003437846C400D0000E0D26A3240F5FFFF6339846C40FDFFFF5F656B3240060000EC3B846C40090000E0F76B3240000000C43E846C40F9FFFF9F896C3240F3FFFFFB41846C40040000601B6D3240FCFFFF7B45846C40F2FFFF5FAC6D3240FEFFFF5B49846C40060000E03C6E32400C00008C4D846C40F3FFFF1FCD6E3240FAFFFF1352846C40FCFFFF9F5C6F3240F4FFFFEB56846C4004000060EB6F3240F1FFFF1B5C846C40F9FFFF9F79703240F0FFFFA361846C4008000020077132400500007467846C40FBFFFFDF93713240FAFFFF9B6D846C40090000E01F723240F1FFFF1B74846C40FAFFFF1FAB723240FEFFFFE37A846C40FDFFFF5F357332400D00000482846C40F5FFFF9FBE7332400F00006C89846C40FFFFFFDF46743240F0FFFF2B91846C4007000060CE7432400000003C99846C40FCFFFF9F5475324003000094A1846C40020000E0D975324009000044AA846C40F4FFFFDF5D7632400000003CB3846C40F8FFFFDFE07632400D00007CBC846C40030000A0627732400400000CC6846C40FAFFFF1FE3773240060000ECCF846C400C00002062783240FAFFFF13DA846C40F7FFFF1FE078324004000084E4846C40FCFFFF9F5C7932400000003CEF846C40000000A0D7793240EFFFFF3BFA846C400B000060517A3240F3FFFF8305856C400B000060C97A32400C00001411856C40F7FFFF1F407B3240FEFFFFE31C856C40FDFFFF5FB57B3240FBFFFF0329856C40F8FFFFDF287C3240FEFFFF5B35856C40030000A09A7C3240F3FFFFFB41856C400D0000E00A7D3240070000DC4E856C40F9FFFF9F797D3240F3FFFFFB5B856C4007000060E67D3240F5FFFF6369856C400B000060517E3240FBFFFF0377856C40030000A0BA7E3240070000DC84856C400C000020227F3240050000FC92856C40090000E0877F32401100004CA1856C400E0000A0EB7F3240F5FFFFDBAF856C40FDFFFF5F4D803240020000A4BE856C40FDFFFF5FAD803240F0FFFFA3CD856C40FAFFFF1F0B813240070000DCDC856C400800002067813240FFFFFF4BEC856C40F8FFFFDFC0813240060000ECFB856C40F8FFFFDF18823240110000C40B866C40F5FFFF9F6E823240080000CC1B866C400C000020C2823240F3FFFFFB2B866C400E0000A013833240060000643C866C400D0000E062833240050000FC4C866C40F7FFFF1FB0833240F7FFFFBB5D866C40FAFFFF1FFB833240F9FFFFAB6E866C400E0000A043843240110000C47F866C400C0000208A843240FBFFFF0391866C4007000060CE843240FDFFFF6BA2866C400000006010853240FCFFFFF3B3866C40090000E04F8532400A0000ACC5866C40F3FFFF1F8D853240FCFFFF7BD7866C40090000E0C7853240FCFFFF7BE9866C40000000600086324003000094FB866C40F5FFFF9F36863240080000CC0D876C400C0000206A863240F1FFFF1B20876C400E0000A09B863240F1FFFF9332876C40F9FFFF5FCA8632400200001C45876C40FFFFFFDFF6863240110000C457876C400A0000A020873240040000846A876C40F7FFFF1F48873240FEFFFF5B7D876C40F3FFFF1F6D8732400900004490876C40000000A08F873240F7FFFF43A3876C40000000A0AF873240F6FFFF53B6876C40060000E0CC87324005000074C9876C40090000E0E7873240020000A4DC876C400000006000883240F5FFFFDBEF876C40FEFFFF1F16883240F9FFFF2303886C400B000060298832400D00007C16886C400C0000203A883240F5FFFFDB29886C40F7FFFF1F488832400000003C3D886C40FBFFFFDF53883240F9FFFFAB50886C40060000E05C883240FAFFFF1364886C4004000060638832400C00008C77886C400800002067883240050000FC8A886C400000006068883240F4FFFF739E886C4008000020678832400F0000E4B1886C40FAFFFF1F6388324007000054C5886C40060000E05C883240090000BCD8886C40FBFFFFDF538832400B000024EC886C40F7FFFF1F48883240FCFFFF7BFF886C400C0000203A883240100000D412896C400B00006029883240F1FFFF1B26896C40FEFFFF1F16883240FEFFFF5B39896C40F7FFFF1F00883240FBFFFF8B4C896C40090000E0E78732400A0000AC5F896C40060000E0CC873240090000BC72896C40F6FFFF5FAF873240F7FFFFBB85896C40000000A08F873240020000A498896C40F3FFFF1F6D87324005000074AB896C40F7FFFF1F48873240F8FFFF33BE896C400A0000A020873240070000DCD0896C40F5FFFF9FF68632400F00006CE3896C40F9FFFF5FCA863240F5FFFFDBF5896C40040000609B863240F8FFFF33088A6C400C0000206A863240FDFFFF6B1A8A6C400700006036863240040000842C8A6C4000000060008632400D00007C3E8A6C40090000E0C7853240F6FFFF53508A6C40060000E08C8532400D000004628A6C40000000A04F85324003000094738A6C40F7FFFF1F10853240050000FC848A6C40FEFFFF1FCE843240EFFFFF3B968A6C400C0000208A84324007000054A78A6C400E0000A043843240EFFFFF3BB88A6C400D0000E0FA833240050000FCC88A6C40090000E0AF83324003000094D98A6C400D0000E062833240F3FFFFFBE98A6C400400006013833240F8FFFF33FA8A6C40020000E0C1823240F8FFFF330A8B6C40070000606E8232400400000C1A8B6C400A0000A0188232400A0000AC298B6C400A0000A0C08132400200001C398B6C40FFFFFFDF66813240F6FFFF53488B6C400D0000E00A81324007000054578B6C40F3FFFF1FAD803240F1FFFF1B668B6C40F3FFFF1F4D803240F9FFFFAB748B6C4004000060EB7F3240050000FC828B6C40000000A0877F32400200001C918B6C40020000E0217F32400E0000F49E8B6C40F9FFFF5FBA7E3240F1FFFF93AC8B6C4001000020517E3240FCFFFFF3B98B6C40FEFFFF1FE67D32400200001CC78B6C4001000020797D3240F3FFFFFBD38B6C40030000A00A7D32400B00009CE08B6C40F9FFFF5F9A7C32400E0000F4EC8B6C4000000060287C3240F2FFFF0BF98B6C40060000E0B47B3240FEFFFFE3048C6C40090000E03F7B3240F4FFFF73108C6C4001000020C97A3240F7FFFFBB1B8C6C4001000020517A3240090000BC268C6C40F6FFFF5FD779324005000074318C6C40050000205C7932400F0000E43B8C6C40090000E0DF7832400400000C468C6C40020000E0617832400F0000E44F8C6C40030000A0E277324005000074598C6C400C00002062773240090000BC628C6C400A0000A0E0763240010000B46B8C6C40070000A05D7632401000005C748C6C400B000060D9753240090000BC7C8C6C40F2FFFF5F54753240000000C4848C6C40F4FFFFDFCD743240040000848C8C6C40F5FFFF9F46743240FCFFFFF3938C6C40FEFFFF1FBE733240F2FFFF0B9B8C6C40060000E034733240F5FFFFDBA18C6C40030000A0AA723240F6FFFF53A88C6C40000000A01F7232400D00007CAE8C6C400E0000A093713240F6FFFF53B48C6C40FFFFFFDF06713240FFFFFFD3B98C6C400B00006079703240FBFFFF03BF8C6C40FAFFFF1FEB6F3240F5FFFFDBC38C6C40050000205C6F324006000064C88C6C40FCFFFF9FCC6E3240F1FFFF93CC8C6C40FCFFFF9F3C6E3240F4FFFF73D08C6C4005000020AC6D3240F3FFFFFBD38C6C400D0000E01A6D3240F0FFFF2BD78C6C400B000060896C32400D000004DA8C6C40F6FFFF5FF76B3240FBFFFF8BDC8C6C40F3FFFF1F656B3240090000BCDE8C6C40F9FFFF5FD26A3240F1FFFF93E08C6C40000000A03F6A3240FAFFFF13E28C6C40F2FFFF5FAC693240F7FFFF43E38C6C400100002019693240F1FFFF1BE48C6C40F4FFFFDF85683240F1FFFF93E48C6C40F9FFFF5FF2673240090000BCE48C6C40F5FFFF9F5E673240FBFFFF8BE48C6C40FAFFFF1FCB6632400400000CE48C6C40000000A037663240F0FFFF2BE38C6C40F2FFFF5FA4653240F3FFFFFBE18C6C40F8FFFFDF10653240FDFFFF6BE08C6C40F4FFFFDF7D643240FBFFFF8BDE8C6C40FAFFFF1FEB633240F6FFFF53DC8C6C400000006058633240080000CCD98C6C40FEFFFF1FC6623240FEFFFFE3D68C6C40F2FFFF5F346232400A0000ACD38C6C40030000A0A2613240F1FFFF1BD08C6C40F9FFFF9F11613240EFFFFF3BCC8C6C4001000020816032400D000004C88C6C4001000020F15F324005000074C38C6C40F9FFFF9F615F3240F1FFFF93BE8C6C400D0000E0D25E3240FEFFFF5BB98C6C40FCFFFF9F445E3240FFFFFFD3B38C6C4008000020B75D3240F3FFFFFBAD8C6C40030000A02A5D3240080000CCA78C6C40F5FFFF9F9E5C32401100004CA18C6C400E0000A0135C32400D00007C9A8C6C400B000060895B3240FEFFFF5B938C6C40F7FFFF1F005B32400F0000E48B8C6C40090000E0775A32400B000024848C6C400A0000A0F0593240FAFFFF137C8C6C40F9FFFF5F6A5932400A0000AC738C6C40F3FFFF1FE5583240FBFFFF036B8C6C4001000020615832400D000004628C6C4007000060DE573240090000BC588C6C40060000E05C573240F9FFFF234F8C6C40F2FFFF5FDC563240F7FFFF43458C6C40FDFFFF5F5D5632400200001C3B8C6C40000000A0DF553240F9FFFFAB308C6C40FAFFFF1F63553240060000EC258C6C40F7FFFF1FE8543240F4FFFFEB1A8C6C40F5FFFF9F6E543240FAFFFF9B0F8C6C40F5FFFF9FF65332400400000C048C6C40090000E07F533240F8FFFF33F88B6C400D0000E00A533240F1FFFF1BEC8B6C40000000A097523240F7FFFFBBDF8B6C40070000A0255232400200001CD38B6C40070000A0B5513240EFFFFF3BC68B6C4008000020475132400200001CB98B6C40F9FFFF5FDA503240010000B4AB8B6C40F6FFFF5F6F503240FAFFFF139E8B6C400700006006503240EFFFFF3B908B6C40FFFFFFDF9E4F32400B000024828B6C400B000060394F3240080000CC738B6C40F4FFFFDFD54E32400000003C658B6C4005000020744E3240F4FFFF73568B6C40F2FFFF5F144E324005000074478B6C4007000060B64D324009000044388B6C40030000A05A4D3240100000D4288B6C40F8FFFFDF004D32400A000034198B6C4001000020A94C3240F5FFFF63098B6C400E0000A0534C3240F5FFFF63F98A6C40F7FFFF1F004C3240F0FFFF2BE98A6C40F5FFFF9FAE4B3240F6FFFFCBD88A6C40F6FFFF5F5F4B3240F8FFFF33C88A6C40F9FFFF5F124B3240FCFFFF7BB78A6C40000000A0C74A3240FBFFFF8BA68A6C40FFFFFFDF7E4A3240FCFFFF7B958A6C400A0000A0384A324009000044848A6C40F2FFFF5FF4493240070000DC728A6C40030000A0B249324007000054618A6C40FAFFFF1F73493240F0FFFFA34F8A6C40FEFFFF1F36493240FFFFFFD33D8A6C4004000060FB4832400F0000E42B8A6C400D0000E0C2483240080000CC198A6C40060000E08C483240FAFFFF9B078A6C4001000020594832401100004CF5896C40090000E027483240070000DCE2896C4001000020F94732401000005CD0896C40060000E0CC473240F7FFFFBBBD896C400D0000E0A2473240FBFFFF03AB896C400E0000A07B473240F8FFFF3398896C40F5FFFF9F564732401100004C85896C400500002034473240F6FFFF5372896C40F2FFFF5F144732401100004C5F896C40FFFFFFDFF6463240F8FFFF334C896C4005000020DC463240F2FFFF0B39896C400E0000A0C3463240FFFFFFD325896C40F4FFFFDFAD463240F1FFFF9312896C40030000A09A463240F7FFFF43FF886C400C0000208A463240FCFFFFF3EB886C40FBFFFFDF7B463240F1FFFF93D8886C4000000060704632400A000034C5886C40F6FFFF5F67463240080000CCB1886C40F8FFFFDF604632401000005C9E886C40F3FFFF1F5D463240 | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14144 + 249 | Pangboche | 0101000020C89901001BF6DF6511536C4069A19D9742473140 | 0103000020C89901000100000069010000FBFFFF033F536C40FBFFFFDF63313140F8FFFF3332536C40FAFFFF1F63313140FEFFFF5B25536C40FBFFFFDF63313140FBFFFF8B18536C40F5FFFF9F66313140010000B40B536C400D0000E06A313140F4FFFFEBFE526C40F8FFFFDF70313140F1FFFF1BF2526C400000006078313140FEFFFF5BE5526C40020000E0813131400B00009CD8526C40060000E08C313140F5FFFFDBCB526C40020000E099313140F0FFFF2BBF526C4000000060A831314004000084B2526C4000000060B8313140060000ECA5526C40F9FFFF5FCA3131400700005499526C40F4FFFFDFDD313140F6FFFFCB8C526C40FAFFFF1FF3313140F6FFFF5380526C40020000E009323140060000EC73526C40F9FFFF5F223231400C00008C67526C40FCFFFF9F3C3231400000003C5B526C400A0000A058323140FBFFFF034F526C40FEFFFF1F76323140100000D442526C40F3FFFF1F95323140090000BC36526C40F4FFFFDFB5323140EFFFFFB32A526C40F7FFFF1FD8323140000000C41E526C4005000020FC323140F4FFFFEB12526C40F9FFFF9F21333140F9FFFF2307526C400A0000A048333140FCFFFF7BFB516C400B000060713331400F0000E4EF516C400E0000A09B33314006000064E4516C40F6FFFF5FC7333140FBFFFF03D9516C40FCFFFF9FF4333140F7FFFFBBCD516C400400006023343140F1FFFF93C2516C400E0000A053343140F3FFFF83B7516C40FDFFFF5F85343140F1FFFF93AC516C400A0000A0B8343140F7FFFFBBA1516C40F3FFFF1FED343140F2FFFF0B97516C400400006023353140F4FFFF738C516C400D0000E05A3531400D00000482516C40FBFFFFDF93353140010000B477516C40FEFFFF1FCE353140F3FFFF836D516C40020000E009363140FCFFFF7B63516C40FFFFFFDF463631400300009459516C40F3FFFF1F85363140080000CC4F516C40060000E0C4363140F8FFFF3346516C40F4FFFFDF05373140090000BC3C516C40090000E0473731400F00006C33516C40040000608B373140090000442A516C40F7FFFF1FD0373140F7FFFF4321516C40FEFFFF1F16383140FDFFFF6B18516C40F3FFFF1F5D383140110000C40F516C40FDFFFF5FA53831400000003C07516C40FFFFFFDFEE383140F4FFFFEBFE506C400B00006039393140090000BCF6506C40F3FFFF1F85393140000000C4EE506C40020000E0D1393140F4FFFFEBE6506C40000000A01F3A31401100004CDF506C40070000606E3A3140FFFFFFD3D7506C40FEFFFF1FBE3A3140F1FFFF93D0506C40080000200F3B3140FCFFFF7BC9506C40F8FFFFDF603B3140F1FFFF93C2506C4004000060B33B3140F5FFFFDBBB506C4008000020073C3140FEFFFF5BB5506C400E0000A05B3C3140FBFFFF03AF506C40F8FFFFDFB03C3140FEFFFFE3A8506C4008000020073D31400E0000F4A2506C40F4FFFFDF5D3D31400000003C9D506C40070000A0B53D3140010000B497506C40FEFFFF1F0E3E31400600006492506C40F6FFFF5F673E3140F7FFFF438D506C400B000060C13E3140F6FFFF5388506C40FBFFFFDF1B3F3140F0FFFFA383506C4008000020773F3140F9FFFF237F506C40FAFFFF1FD33F3140100000D47A506C40F6FFFF5F2F403140000000C476506C40F2FFFF5F8C403140FEFFFFE372506C40020000E0E94031400000003C6F506C40090000E047413140080000CC6B506C4007000060A6413140F1FFFF9368506C40FDFFFF5F054231400300009465506C40FCFFFF9F64423140F6FFFFCB62506C40F2FFFF5FC4423140EFFFFF3B60506C40FCFFFF9F244331400F0000E45D506C40060000E084433140110000C45B506C40070000A0E5433140F5FFFFDB59506C40F5FFFF9F46443140F8FFFF3358506C40090000E0A7443140090000BC56506C400B00006009453140FCFFFF7B55506C400D0000E06A4531400D00007C54506C40FCFFFF9FCC453140010000B453506C40F5FFFF9F2E463140F9FFFF2353506C400000006090463140F6FFFFCB52506C40F9FFFF5FF2463140F9FFFFAB52506C40FCFFFF9F54473140000000C452506C40F5FFFF9FB64731400200001C53506C400A0000A0184831400A0000AC53506C40030000A07A483140FDFFFF6B54506C40FCFFFF9FDC4831400500007455506C40070000603E493140F9FFFFAB56506C40090000E09F493140F1FFFF1B58506C400B000060014A3140110000C459506C40030000A0624A31400A0000AC5B506C400E0000A0C34A3140080000CC5D506C40F2FFFF5F244B3140F1FFFF1B60506C40FCFFFF9F844B3140F9FFFFAB62506C40060000E0E44B31400500007465506C40FCFFFF9F444C3140F4FFFF7368506C40FBFFFFDFA34C3140F0FFFFA36B506C400D0000E0024D31400C0000146F506C400B000060614D3140EFFFFFB372506C40F6FFFF5FBF4D3140F1FFFF9376506C40060000E01C4E3140020000A47A506C40020000E0794E3140F4FFFFEB7E506C4007000060D64E31400F00006C83506C40F9FFFF5F324F3140F1FFFF1B88506C40070000A08D4F3140FBFFFF038D506C40F7FFFF1FE84F31400B00002492506C400C000020425031400500007497506C40040000609B503140050000FC9C506C40FBFFFFDFF3503140EFFFFFB3A2506C400E0000A04B513140020000A4A8506C40030000A0A2513140000000C4AE506C40F8FFFFDFF85131400C000014B5506C40FEFFFF1F4E52314003000094BB506C40030000A0A2523140FFFFFF4BC2506C4007000060F6523140F0FFFF2BC9506C40010000204953314009000044D0506C400D0000E09A5331400C00008CD7506C400E0000A0EB533140050000FCDE506C400E0000A03B5431400B00009CE6506C40F9FFFF5F8A543140F4FFFF73EE506C40F7FFFF1FD8543140FDFFFF6BF6506C40060000E024553140F1FFFF93FE506C400A0000A070553140F4FFFFEB06516C4004000060BB5531400F00006C0F516C40FCFFFF9F04563140F1FFFF1B18516C40F3FFFF1F4D5631400E0000F420516C400500002094563140FCFFFFF329516C400C000020DA5631400200001C33516C40FFFFFFDF1E573140FDFFFF6B3C516C40F9FFFF5F625731400F0000E445516C40FCFFFF9FA4573140FCFFFF7B4F516C40070000A0E5573140F7FFFF4359516C40FDFFFF5F25583140F0FFFF2B63516C40FBFFFFDF635831400A0000346D516C40F8FFFFDFA0583140F5FFFF6377516C40FCFFFF9FDC583140010000B481516C40FFFFFFDF165931400100002C8C516C40090000E04F593140000000C496516C40F6FFFF5F8759314005000074A1516C40070000A0BD593140FFFFFF4BAC516C40F9FFFF5FF25931400000003CB7516C40070000A0255A3140FFFFFF4BC2516C40F6FFFF5F575A3140FCFFFF7BCD516C40000000A0875A3140000000C4D8516C4007000060B65A31400B000024E4516C40FBFFFFDFE35A3140F0FFFFA3EF516C40000000A00F5B31400000003CFB516C40020000E0395B3140F4FFFFEB06526C40F9FFFF5F625B3140EFFFFFB312526C40F9FFFF9F895B3140F1FFFF931E526C4008000020AF5B3140040000842A526C40FAFFFF1FD35B3140FBFFFF8B36526C40FDFFFF5FF55B3140020000A442526C40FEFFFF1F165C3140100000D44E526C40FDFFFF5F355C31400C0000145B526C400D0000E0525C3140F5FFFF6367526C40F5FFFF9F6E5C3140110000C473526C40F8FFFFDF885C3140F8FFFF3380526C400B000060A15C3140EFFFFFB38C526C4000000060B85C31400000003C99526C40070000A0CD5C3140FFFFFFD3A5526C4001000020E15C3140F4FFFF73B2526C40FAFFFF1FF35C31400200001CBF526C40FAFFFF1F035D3140080000CCCB526C40F9FFFF9F115D3140FBFFFF8BD8526C40F5FFFF9F1E5D31401100004CE5526C40F9FFFF9F295D3140FAFFFF13F2526C40FAFFFF1F335D3140FEFFFFE3FE526C40030000A03A5D3140010000B40B536C400A0000A0405D3140FBFFFF8B18536C40060000E0445D3140F5FFFF6325536C40000000A0475D3140EFFFFF3B32536C4000000060485D31400C0000143F536C40000000A0475D3140060000EC4B536C40060000E0445D3140090000BC58536C400A0000A0405D31400C00008C65536C40030000A03A5D31401000005C72536C40FAFFFF1F335D3140F9FFFF237F536C40F9FFFF9F295D3140060000EC8B536C40070000601E5D3140020000A498536C40F9FFFF9F115D314007000054A5536C40FAFFFF1F035D31400D000004B2536C400D0000E0F25C3140020000A4BE536C4001000020E15C31400000003CCB536C40070000A0CD5C3140110000C4D7536C4000000060B85C3140EFFFFF3BE4536C400B000060A15C3140F9FFFFABF0536C40F8FFFFDF885C3140F2FFFF0BFD536C40F5FFFF9F6E5C3140FEFFFF5B09546C400D0000E0525C3140FAFFFF9B15546C40F3FFFF1F355C3140080000CC21546C40FEFFFF1F165C31400F0000E42D546C40FDFFFF5FF55B3140060000EC39546C40FAFFFF1FD35B31400F0000E445546C4008000020AF5B3140F7FFFFBB51546C40F9FFFF9F895B3140F3FFFF835D546C40F9FFFF5F625B31400A00003469546C40F9FFFF9F395B3140F6FFFFCB74546C40F6FFFF5F0F5B3140FFFFFF4B80546C400E0000A0E35A31400A0000AC8B546C4007000060B65A31400E0000F496546C40000000A0875A31400B000024A2546C40F6FFFF5F575A31400A000034AD546C40FDFFFF5F255A31400B000024B8546C400C000020F2593140050000FCC2546C40FDFFFF5FBD593140010000B4CD546C40F6FFFF5F8759314009000044D8546C40090000E04F593140090000BCE2546C40FFFFFFDF16593140F2FFFF0BED546C40F2FFFF5FDC5831400000003CF7546C400A0000A0A05831401100004C01556C400E0000A0635831400A0000340B556C40FDFFFF5F255831400E0000F414556C40070000A0E5573140F1FFFF931E556C40FCFFFF9FA45731400400000C28556C40F9FFFF5F62573140FEFFFF5B31556C40FFFFFFDF1E573140040000843A556C400C000020DA563140FCFFFF7B43556C400500002094563140F6FFFF534C556C40060000E04C563140FBFFFF0355556C40FCFFFF9F04563140F3FFFF835D556C40FAFFFF1FBB553140F5FFFFDB65556C4000000060705531400D0000046E556C40060000E0245531400D00000476556C40F7FFFF1FD8543140FFFFFFD37D556C400C0000208A5431400500007485556C40040000603B543140FEFFFFE38C556C400E0000A0EB5331400100002C94556C40030000A09A533140F7FFFF439B556C40F8FFFFDF485331400B000024A2556C40FEFFFF1FF6523140070000DCA8556C40030000A0A2523140FEFFFF5BAF556C40F4FFFFDF4D5231400A0000ACB5556C400A0000A0F8513140080000CCBB556C40F9FFFF5FA2513140F7FFFFBBC1556C40040000604B51314005000074C7556C400E0000A0F3503140050000FCCC556C40FAFFFF1F9B503140FFFFFF4BD2556C40020000E0415031400F00006CD7556C40090000E0E74F3140F6FFFF53DC556C40FDFFFF5F8D4F3140FBFFFF03E1556C400C000020324F3140F3FFFF83E5556C40FEFFFF1FD64E3140080000CCE9556C40F9FFFF9F794E3140F5FFFFDBED556C40FCFFFF9F1C4E3140010000B4F1556C4008000020BF4D3140FEFFFF5BF5556C4001000020614D3140000000C4F8556C40030000A0024D3140F3FFFFFBFB556C400E0000A0A34C3140050000FCFE556C40F2FFFF5F444C3140110000C401566C40FCFFFF9FE44B3140FFFFFF4B04566C40F2FFFF5F844B3140020000A406566C4005000020244B3140000000C408566C4004000060C34A3140020000A40A566C40F9FFFF5F624A3140F6FFFF530C566C4001000020014A3140110000C40D566C40000000A09F493140050000FC0E566C40FEFFFF1F3E493140F3FFFFFB0F566C40F2FFFF5FDC483140000000C410566C40F9FFFF5F7A4831400700005411566C400000006018483140F0FFFFA311566C4007000060B6473140110000C411566C40F2FFFF5F54473140F0FFFFA311566C40F9FFFF5FF24631401100004C11566C40F7FFFF1F90463140090000BC10566C40070000602E463140060000EC0F566C40F2FFFF5FCC453140F4FFFFEB0E566C40030000A06A4531400A0000AC0D566C400100002009453140EFFFFF3B0C566C40000000A0A7443140FBFFFF8B0A566C400700006046443140020000A408566C40FDFFFF5FE54331400400008406566C40FCFFFF9F844331400100002C04566C40F2FFFF5F24433140FAFFFF9B01566C4005000020C4423140100000D4FE556C40F2FFFF5F64423140FFFFFFD3FB556C40F3FFFF1F054231400B00009CF8556C40FEFFFF1FA6413140F0FFFF2BF5556C40000000A047413140F3FFFF83F1556C40F9FFFF9FE9403140F0FFFFA3ED556C40050000208C40314003000094E9556C40080000202F403140F7FFFF43E5556C400D0000E0D23F3140000000C4E0556C40FFFFFFDF763F3140FAFFFF13DC556C400E0000A01B3F3140F9FFFF23D7556C4001000020C13E31400D000004D2556C4008000020673E3140EFFFFFB3CC556C40FEFFFF1F0E3E3140F0FFFF2BC7556C40070000A0B53D314005000074C1556C40F4FFFFDF5D3D3140F3FFFF83BB556C40FFFFFFDF063D3140F5FFFF63B5556C400A0000A0B03C3140F2FFFF0BAF556C40040000605B3C3140FBFFFF8BA8556C40FFFFFFDF063C3140FFFFFFD3A1556C4004000060B33B3140F4FFFFEB9A556C400A0000A0603B3140FFFFFFD393556C40FFFFFFDF0E3B3140F1FFFF938C556C40FEFFFF1FBE3A31400200001C85556C40FEFFFF1F6E3A3140050000747D556C40F6FFFF5F1F3A3140F0FFFFA375556C40F9FFFF9FD13931400A0000AC6D556C40060000E084393140FCFFFF7B65556C400B00006039393140F9FFFF235D556C40F5FFFF9FEE383140020000A454556C40FDFFFF5FA5383140F3FFFFFB4B556C40F3FFFF1F5D383140F9FFFF2343556C40F4FFFFDF153831400B0000243A556C40F7FFFF1FD0373140050000FC30556C40040000608B3731400A0000AC27556C40090000E047373140F8FFFF331E556C40070000A005373140F1FFFF9314556C40FCFFFF9FC4363140100000D40A556C40060000E084363140F4FFFFEB00556C40F5FFFF9F46363140FEFFFFE3F6546C40F9FFFF9F09363140EFFFFFB3EC546C40F4FFFFDFCD35314006000064E2546C400E0000A093353140060000ECD7546C40030000A05A353140FEFFFF5BCD546C40FAFFFF1F23353140020000A4C2546C40F3FFFF1FED343140FFFFFFD3B7546C4000000060B8343140FEFFFFE3AC546C40F3FFFF1F85343140FFFFFFD3A1546C400400006053343140020000A496546C40FAFFFF1F23343140FEFFFF5B8B546C40F2FFFF5FF4333140F3FFFFFB7F546C4008000020C73331400400008474546C40040000609B333140F4FFFFEB68546C4001000020713331400000003C5D546C400A0000A048333140FCFFFF7B51546C40F9FFFF9F21333140FAFFFF9B45546C40FBFFFFDFFB3231400A0000AC39546C40F7FFFF1FD83231400A0000AC2D546C40070000A0B53231400C00008C21546C40F3FFFF1F95323140F5FFFF6315546C40F4FFFFDF75323140F9FFFF2309546C400000006058323140070000DCFC536C40FCFFFF9F3C3231400D00007CF0536C40F9FFFF5F223231400400000CE4536C40020000E00932314003000094D7536C40FAFFFF1FF3313140F2FFFF0BCB536C40F4FFFFDFDD3131400D00007CBE536C40F9FFFF5FCA313140F5FFFFDBB1536C4000000060B83131400A000034A5536C40F7FFFF1FA83131400400008498536C40F9FFFF9F99313140080000CC8B536C40060000E08C313140F2FFFF0B7F536C40020000E0813131400900004472536C400000006078313140FCFFFF7B65536C40F8FFFFDF70313140F9FFFFAB58536C400D0000E06A313140F5FFFFDB4B536C40F5FFFF9F66313140FBFFFF033F536C40FBFFFFDF63313140 | 01-01-2006 | aa | http://planetarynames.wr.usgs.gov/Feature/14145 + 301 | Nix Olympica | 0101000020C89901000000000000C06C402C095FC797C83340 | | 01-01-1958 | al | http://planetarynames.wr.usgs.gov/Feature/4314 + 1849 | Hermes Patera | 0101000020C89901000AD7A3703D526C4014AE47E17A543240 | 0103000020C89901000100000027000000C60000C0E0486C4073FFFFFF271132409A00004043486C402DFFFFFFBB223240160000C02C486C4073FFFFFF793732409A0000807B486C40E7FEFFFF294B32408400006032486C40E7FEFFFFD45432406E0000C059486C40E7FEFFFF7F5E3240160000C03A496C402DFFFFFF1B77324042000040404B6C4073FFFFFF47873240BEFFFFBF534E6C40E7FEFFFFEF93324016000080834F6C400AFFFFFF279832406E0000C0C9506C402DFFFFFF439A3240BEFFFFBF8B526C402DFFFFFFAB9B324042000040CC556C402DFFFFFF0B963240160000C096566C40BAFFFFFFD39132406E0000C0D1576C4073FFFFFF178A32409A00004023596C40BAFFFFFFC38332406E0000C0A15A6C402DFFFFFF8B7F3240BEFFFF7FD15B6C40BAFFFFFF157D3240000000009C5C6C4096FFFFFFDD78324042000040D45C6C4073FFFFFF97733240EAFFFF3F015D6C402DFFFFFF0B69324092FFFF3F2E5D6C40E7FEFFFF4F6132406E0000C0715D6C402DFFFFFF8B523240EAFFFF3F015D6C40BAFFFFFF434032409A000040F35B6C4073FFFFFF173032409A0000408B5A6C402DFFFFFF8B253240160000C066596C402DFFFFFF1B1D3240EAFFFF3FC9586C402DFFFFFF4B1A3240160000C04A576C40BAFFFFFF831E3240160000C0E2556C40BAFFFFFF232432406E00004064546C402DFFFFFFA727324000000040CF526C4050FFFFFF7D24324092FFFF3FEE516C4073FFFFFF371F32409A000040B3506C4073FFFFFFC7163240160000C08E4F6C4073FFFFFF27113240C60000C0804E6C40E7FEFFFF5F153240C60000C0644C6C40BAFFFFFF131632409A0000405F4A6C4073FFFFFFF7133240C60000C0E0486C4073FFFFFF27113240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15690 + 1688 | Olympus Rupes | 0101000020C8990100EE68117FEF4D6C408327CB1FE7663240 | 0102000020C89901004C0000000000009CBE6D6C40000000E01FEF36400000008CF97D6C40000000A0EBA736400000004C108B6C4000000060486D3640000000A4D2906C4000000060C64B3640000000E488956C40000000608319364000000074F59E6C400000006083193640000000A4E6B36C40000000205EBD35400000009421C46C40000000605A7A35400000000476CB6C4000000020E74335400000001C3ECC6C400000002045163540000000DCC6C66C40000000203B8E3440000000CCF8D66C40000000E0CB2E3340000000F4B0DB6C40000000600E803240000000F4B0DB6C40000000E0F70E3240000000F4B0DB6C40000000A0D6F53140000000FC36DC6C400000002088FA30400000000C43DD6C40000000E092A23040000000B480D76C4000000060BF6330400000009468D56C40000000200D3E30400000005CBED16C40000000C012F62F40000000349ACE6C40000000C04DA22F400000000476CB6C40000000C024032F400000006C83C16C400000004003EA2E4000000064A1BA6C40000000C0DB472E400000008448B16C40000000406E792D40000000EC55A76C4000000040A5E22C4000000044D19B6C40000000C05E6D2C40000000AC58916C40000000C099192C400000000CE0866C40000000C0DC4B2C40000000544F7A6C40000000C0DC4B2C400000003CF0666C40000000C017F82B400000008C6B5B6C4000000040B7EF2B40000000E4E64F6C40000000C099192C4000000024D0426C40000000C0318B2B40000000A4E9396C4000000040D1822B400000001CC8316C40000000C04AC32B40000000AC842C6C4000000040FC1D2C400000000C2A1E6C40000000406E792D40000000B467186C40000000406E792D40000000FCD60B6C4000000040A9252D400000004446FF6B40000000C0EF9A2D40000000FC48E96B40000000C079422E40000000EC6FD66B400000004081C82E400000006C0FCE6B40000000C0E1D02E400000007CD4BD6B40000000C0E1D02E40000000D44FB26B40000000C0E9562F40000000941FAE6B40000000205B1830400000006CFBAA6B40000000E053B330400000007C8DAC6B4000000060A91331400000001439A56B40000000606E673140000000A47B9C6B40000000A01A8831400000009CD89C6B40000000E084D831400000006491A46B400000006051C33140000000BCBDB06B4000000060E19D31400000005CBCBB6B400000002028133240000000BC04C26B4000000020609D32400000006CC8BC6B40000000E033DC3240000000F467B46B40000000A0B9403340000000ECE1B36B40000000A0AE983340000000248CB76B4000000060772F3440000000845ABE6B40000000E03FC63440000000C48AC26B4000000020E743354000000084A1CF6B40000000E0AFDA354000000074DCDF6B40000000A03982364000000044FFED6B40000000E01FEF3640000000E4FDF86B40000000A062213740000000645E016C40000000A0A1103740000000DCBE096C40000000A0E0FF3640000000A45B176C40000000E01FEF364000000024BC1F6C40000000208FE23640000000AC28296C40000000E01FEF36400000007C4B376C40000000E0100437400000006C86476C40000000E0922537400000001C91536C40000000E014473740000000ECB3616C4000000020021937400000009CBE6D6C40000000E01FEF3640 | 01-01-1976 | ru | http://planetarynames.wr.usgs.gov/Feature/4454 + 1847 | Zeus Patera | 0101000020C89901000AD7A3703D626C40A4703D0AD7633240 | 0103000020C899010001000000350000008C01008025506C40B0000000E6AC3240DC0000807F506C40B000000056B5324034010080BA516C406A0000001AC43240DC00008003546C406A0000002AD232408400008000576C406A0000009ADA324008010000415A6C406A0000000AE33240DC000080275D6C406A0000000AE3324008010000E15F6C406A0000003AE032403401008032616C40B000000086DF324034010080CA5F6C406A000000FAD43240B00000005A5F6C40B000000036C63240DC000080F75F6C4023000000EEB3324008010000FD616C40B0000000A6A1324008010000CD646C40F6000000B29532403401008086676C406A0000007A913240DC000000B9696C40B00000001A97324084000080B06A6C40F6000000F2A03240340100800A6B6C4023000000AEA83240B0000000B66C6C40B0000000669632408C010080AD6D6C40230000007E7E324084000080806D6C40F6000000B268324084000080CC6C6C406A000000CA50324008010000896C6C406A0000004A3A324060010000F46A6C40F6000000921F32408C01008075696C406A000000DA04324034010080D2666C406A0000002AF13140B0000000FA646C40F600000052E731408C01008021636C406A0000004AE03140B00000000E606C40230000008ED83140DC000080DB5D6C40B000000026D73140080100005D5C6C40B000000026D7314008010000115D6C406A0000004AE03140B00000003E5D6C40F6000000F2EC314060010000E45C6C40B0000000E6F8314058000000035C6C40230000008E053240DC000080575A6C406A0000001A103240DC000080EF586C40230000003E19324060010000C85A6C40F60000000228324034010080465C6C40F6000000B23B3240DC000080275D6C406A000000CA503240DC000080735C6C40B00000009666324060010000305C6C40F600000092793240580000009B5A6C40F6000000028232408C0100802D576C406A000000DA8B324058000000AF556C40F6000000B2953240DC00008003546C40230000006E9D324058000000DF526C40F6000000229E3240B00000001A546C406A0000002AA5324058000000AF556C40F600000092A6324034010080D6536C40F600000062A932408400008014526C40B000000076A43240DC000080CB4F6C40B000000046A732408C01008025506C40B0000000E6AC3240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15689 + 1848 | Athena Patera | 0101000020C8990100F6285C8FC2656C403D0AD7A370BD3240 | 0103000020C89901000100000014000000EF0100E0ED606C4050FFFFFF19C432403F0100E047616C4096FFFFFFA5CE3240050200A0F0616C4096FFFFFF15D73240050200A0A4626C400AFFFFFF1DDE3240D901002023646C4073FFFFFF47E13240AD0100A0A1656C40BAFFFFFF93E03240550100A036676C40BAFFFFFFC3DD32403F0100E003696C4073FFFFFF37D33240290100201D6A6C40E7FEFFFF8FC6324013010060826A6C40E7FEFFFF4FBB3240E70000E0986A6C400AFFFFFF1DB132403F0100E0B7696C4050FFFFFFF9A73240130100601A696C402DFFFFFF7B9E3240D9010020A7676C40E7FEFFFF8F993240550100A0CE656C40E7FEFFFF8F9932403F0100E063636C40BAFFFFFFE39F3240FD0000A0C3616C40E7FEFFFF6FAA324081010020CC606C40DDFFFFFFA1B4324013010060AA606C4050FFFFFF79BE3240EF0100E0ED606C4050FFFFFF19C43240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15693 + 1850 | Apollo Patera | 0101000020C899010066666666664E6C40713D0AD7A3F03140 | 0103000020C899010001000000160000001002000022496C406BFEFFFFE6E83140C0020000C8486C4062FFFFFF48F031407E0200C08F486C40F8FEFFFF2EFB314094020080DE486C40B2FEFFFF2207324002030040B4496C406BFEFFFF1613324052020040764B6C40F8FEFFFF4E17324018030000D34C6C40F8FEFFFF4E17324052020040FA4E6C401BFFFFFFBC123240D60200C0D2506C408FFEFFFFB40B3240D60200C03A526C408FFEFFFF140632406802000035546C408FFEFFFF64F23140D60200C056546C40D5FEFFFFD0E0314052020040E6536C40F8FEFFFF9ED631407E0200C0CF536C4062FFFFFF88CE3140AA02004005536C406BFEFFFFF6C93140AA020040E9506C403EFFFFFFDAC73140D60200C0B64E6C40B2FEFFFFE2CE314094020080164D6C406BFEFFFF36D53140180300001F4C6C40B2FEFFFF52D73140EC020080CD4A6C401BFFFFFF4CDD31403C020080BF496C406BFEFFFF46E331401002000022496C406BFEFFFFE6E83140 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15694 + 1851 | Olympus Paterae | 0101000020C899010052B81E85EB596C4052B81E85EB513240 | 0103000020C89901000100000044000000A8FFFFFF98446C40DDFFFFFFF1733240A8FFFFFF4C456C406A0000006A8332400000000088466C4096FFFFFFF58D32407CFFFF7F7F476C4023000000CE97324084000080C8496C40230000003EA03240B0000000CE4B6C40DDFFFFFF91A632402C000080794D6C4096FFFFFF45A73240B00000009E4E6C4096FFFFFF75A43240D4FFFF7FC24F6C406A0000003AB332407CFFFF7F57516C406A0000004AC13240A8FFFFFFA8526C406A0000005ACF3240B0000000F2546C40230000007ED832408400008024576C40DDFFFFFFD1DE32407CFFFF7F7B5A6C4096FFFFFF25E5324000000000545C6C40230000005EE9324008010000E55E6C400AFFFFFF8DE63240DC00008063606C400AFFFFFF8DE632406001000088616C400AFFFFFFBDE3324084000080AC626C4096FFFFFFF5E732408C01008041646C4096FFFFFFC5EA324058000000FB666C400AFFFFFF5DE932405800000017696C4050FFFFFF39E0324060010000AC6A6C4096FFFFFF45D4324058000000E76B6C40DDFFFFFF81C5324060010000146C6C400AFFFFFF5DBC3240F20000C0356C6C4050FFFFFF36B6324084000020306C6C4096FFFFFF4AB132408C010080FD6B6C4096FFFFFFE5AC324034010080DE6C6C4096FFFFFFD59E3240B0000000D66D6C400AFFFFFF2D923240DC000080736E6C40DDFFFFFF317F324084000080A06E6C40DDFFFFFF21713240080100005D6E6C4050FFFFFFA96132408C010080196E6C4096FFFFFFE5523240B0000000D66D6C40DDFFFFFFF1463240580000004F6D6C4096FFFFFFF5333240340100802A6C6C400AFFFFFFDD1E3240B0000000066B6C4050FFFFFF490D324008010000256A6C400AFFFFFFEDFF31406001000090686C4096FFFFFF45F331408C01008011676C400AFFFFFF6DE931405800000093656C40DDFFFFFFE1DE3140B0000000FE636C40DDFFFFFF41D93140B00000002E616C4050FFFFFF39D231408C010080555F6C400AFFFFFF4DCD314084000080585C6C40DDFFFFFFD1D0314060010000345B6C400AFFFFFF7DCA3140DC0000800F5A6C400AFFFFFFDDC43140DC000080F3576C4096FFFFFFD5BD3140B0000000EE556C4050FFFFFFB9BB31408C01008015546C40DDFFFFFF21BD3140B00000006A526C400AFFFFFF6DBC3140340100800A506C4050FFFFFFE9B83140080100009D4C6C400AFFFFFF0DC23140340100806A4A6C4050FFFFFFC9C931408C01008089496C400AFFFFFFEDD2314084000080A8486C4050FFFFFFD9D7314060010000D0466C4050FFFFFFE9E53140840000808C466C400AFFFFFF7DF731405800000057476C40DDFFFFFF11093240840000808C466C4050FFFFFFB915324084000080D8456C4050FFFFFFC9233240340100807E456C4050FFFFFF092F3240B0000000C2456C4050FFFFFFA9343240B00000000E456C400AFFFFFF9D4032408400008070446C400AFFFFFF7D513240080100002D446C4096FFFFFFC5633240A8FFFFFF98446C40DDFFFFFFF1733240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15695 + 1870 | Dionysus Patera | 0101000020C8990100713D0AD7A3586C40F6285C8FC2F53140 | 0103000020C899010001000000140000002C00008045516C40DDFFFFFFE10B32400000000010526C40B0000000061532408400008034536C40B0000000761D3240840000809C546C40DDFFFFFF6122324000000000FC566C406A0000002A1E324058000000EB586C40B0000000D6173240A8FFFFFFAC5A6C40230000002E0B3240A8FFFFFF145C6C40230000001EFD31402C000080855C6C40DDFFFFFFC1EF314000000000E85B6C40DDFFFFFFE1DE314000000000805A6C40B000000056D43140DC000080F3576C406A0000009ACC3140B0000000EE556C40DDFFFFFF31CB31402C000080C9546C40B000000016C93140A8FFFFFFA4536C40DDFFFFFF61C83140000000002C546C40DDFFFFFF41D93140000000002C546C40DDFFFFFF21EA314084000080E8536C40B0000000E6F831405800000097526C40230000008E0532402C00008045516C40DDFFFFFFE10B3240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15692 + 1871 | Hera Patera | 0101000020C89901008FC2F5285C476C403333333333733240 | 0103000020C8990100010000001100000063000060B8466C40DDFFFFFF813E324037000020CC456C4000000000EC4C3240BB0000209F456C4096FFFFFFDF583240370000607D456C4096FFFFFF196A3240130100605E466C406A000000707D3240A50000E0AF476C40000000008E8C3240370000A0474A6C4096FFFFFF439A32404D000020204C6C40DDFFFFFFC79D32404D0000A0254E6C4000000000609C324013010060B24C6C4023000000FE943240370000E08D4B6C40000000009C8D3240630000603C4A6C400000000010833240A50000A00C496C40DDFFFFFF91793240BB000060A7486C40230000009E6D3240BB000060F3476C4096FFFFFF255E3240DFFFFFDFAF476C40000000002037324063000060B8466C40DDFFFFFF813E3240 | 10-16-2017 | pe | http://planetarynames.wr.usgs.gov/Feature/15691 +(12 rows) + +--Testcase 70: +CREATE FOREIGN TABLE "♁ FDW"( + geom geometry NOT NULL, + osm_type varchar(16) OPTIONS (key 'true') NOT NULL , + osm_id bigint OPTIONS (key 'true') NOT NULL, + ver int NOT NULL, + arr text, + t text +) SERVER sqlite_svr OPTIONS (table '♁'); +--Testcase 71: ERR - No SRID +INSERT INTO "♁ FDW" SELECT * FROM "♁"; +ERROR: SpatiaLite doesn't accept GIS data without SRID +HINT: In column "geom" with data type "public.geometry" there is incorrect value in 42 bytes +CONTEXT: Hex data: 01010000009DA62AC82A763E4045F69C4F78D84D40 +--Testcase 72: OK +SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; + geom | osm_type | osm_id | ver | arr | t +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0101000020E610000003756FEAA8753E4064B0E2546BD84D40 | node | 1621246531 | 4 | | {"drain":"disperse"} + 0101000020E6100000621C12ADCB753E408D3A843B61D84D40 | node | 1621246620 | 24 | | {"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"} + 0101000020E6100000223E0B9D32763E404EB10F5773D84D40 | node | 1632220259 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000915D0E6036763E4032EC8BDF6FD84D40 | node | 1632220283 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000F6B2EDB435763E40DE431DB171D84D40 | node | 1632220292 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000065C0FE9023763E4076919D126BD84D40 | node | 1632220315 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000009745178A2A763E40ED93ED8D6BD84D40 | node | 1632220319 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000C9BB348F0D763E40D9A6C2E96ED84D40 | node | 1632220350 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000009E3017A710763E406939D0436DD84D40 | node | 1632220355 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000003CA06CCA15763E40169DD1FB6BD84D40 | node | 1632220358 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000002F1114E40C763E40F03E7DBA70D84D40 | node | 1632220359 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000005BAE23B31F763E404159428875D84D40 | node | 1632220364 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000099A729B80E763E404E9DA27E72D84D40 | node | 1632220366 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000017540A7030763E40228D0A9C6CD84D40 | node | 1632220378 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000084CEB5792D763E40A14D0E9F74D84D40 | node | 1632220590 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000029290BBA18763E40CA56F20C75D84D40 | node | 1632220686 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000BDE2A9471A763E40DB0E57186CD84D40 | node | 1632497609 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"} + 0101000020E610000025F14D2E21763E401C469CA96BD84D40 | node | 1632497610 | 30 | | {"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"} + 0101000020E6100000EA79371614763E40B0FF3A376DD84D40 | node | 1632497611 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"} + 0101000020E61000002152787533763E400E10711871D84D40 | node | 1632497612 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"} + 0101000020E6100000A9F8BF232A763E401CD0D2156CD84D40 | node | 1632497613 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"} + 0101000020E6100000B1A206D330763E40AA5670896DD84D40 | node | 1632497614 | 29 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"} + 0101000020E61000003A0D07F824763E408F9A650575D84D40 | node | 4912277783 | 4 | | {"board_type":"history","information":"board","name":"Меркурий","tourism":"information"} + 0102000020E6100000040000003E038F1436763E40054C851D6BD84D40719417F439763E406FA01BF56BD84D4034B275BA3D763E40EC5FA3F66CD84D40D39DCCE440763E40E09744076ED84D40 | way | 152442438 | 8 | {1652605205,1652605201,1652605200,1652587958} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + 0101000020E6100000E91A1CDB21763E40D872785270D84D40 | node | 1632497615 | 34 | | {"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"} + 0101000020E6100000D243238E2B763E4083D83E8974D84D40 | node | 1632497616 | 26 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"} + 0101000020E61000005F341AAF2F763E40F409EAA573D84D40 | node | 1632497617 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"} + 0101000020E61000004232D3AC22763E402F922C1675D84D40 | node | 1632497618 | 30 | | {"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"} + 0101000020E6100000AC634B4519763E40B28AEDA474D84D40 | node | 1632497619 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"} + 0101000020E6100000D32934B511763E40AD2F12DA72D84D40 | node | 1632497620 | 31 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"} + 0101000020E6100000CEA046C60F763E40D95E0B7A6FD84D40 | node | 1632497621 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"} + 0101000020E6100000F747CE7811763E4011E6D1E869D84D40 | node | 1632503254 | 6 | | {"drain":"no"} + 0101000020E6100000003961C268763E40DF217B736ED84D40 | node | 1652587953 | 5 | | {"drain":"no"} + 0101000020E6100000D39DCCE440763E40E09744076ED84D40 | node | 1652587958 | 5 | | {"drain":"no"} + 0101000020E6100000DAB91FA633763E40384D9F1D70D84D40 | node | 3177639362 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} + 0101000020E610000039DB375211763E403DD68C0C72D84D40 | node | 3188928044 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} + 0101000020E61000003B246BC317763E405451611168D84D40 | node | 3218618266 | 4 | | {"amenity":"bench","backrest":"yes","material":"wood"} + 0101000020E610000049E70D411F763E403ABB6BBF6BD84D40 | node | 4912277772 | 4 | | {"board_type":"history","information":"board","name":"Флора","tourism":"information"} + 0101000020E61000001587D80528763E4034E48EED6BD84D40 | node | 4912277773 | 4 | | {"board_type":"history","information":"board","name":"Урания","tourism":"information"} + 0101000020E6100000ACAB02B518763E40F8B138526CD84D40 | node | 4912277774 | 4 | | {"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"} + 0101000020E6100000B23275B22F763E40153B75406DD84D40 | node | 4912277775 | 4 | | {"board_type":"history","information":"board","name":"Клио","tourism":"information"} + 0101000020E61000007335689E12763E40098DBB9C6DD84D40 | node | 4912277776 | 4 | | {"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"} + 0101000020E6100000C23A44920F763E40AF97A60870D84D40 | node | 4912277777 | 4 | | {"board_type":"history","information":"board","name":"Талия","tourism":"information"} + 0101000020E610000074ACF7C033763E404914B58F70D84D40 | node | 4912277778 | 4 | | {"board_type":"history","information":"board","name":"Калиопа","tourism":"information"} + 0101000020E6100000CDF0FA2713763E40D105F52D73D84D40 | node | 4912277779 | 4 | | {"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"} + 0101000020E6100000B7A7F5C830763E40E342D43373D84D40 | node | 4912277780 | 4 | | {"board_type":"history","information":"board","name":"Полигимния","tourism":"information"} + 0101000020E610000096253ACB2C763E402474E15174D84D40 | node | 4912277781 | 4 | | {"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"} + 0101000020E610000045DA21591B763E4065BF93BB74D84D40 | node | 4912277782 | 4 | | {"board_type":"history","information":"board","name":"Эрато","tourism":"information"} + 0101000020E610000078E0AD3DFD753E40454EBA884AD84D40 | node | 5251698420 | 25 | | {"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"} + 0101000020E610000042AF3F89CF753E407F805AB164D84D40 | node | 6758903438 | 6 | | {"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"} + 0101000020E6100000E1FFD8356B763E40A4C74A276DD84D40 | node | 8331430683 | 3 | | {"inlet":"grate","manhole":"drain","man_made":"manhole"} + 0101000020E6100000CA71022E23763E40F086342A70D84D40 | node | 8530936200 | 1 | | {"board_type":"history","information":"board","name":"Аполлон","tourism":"information"} + 0101000020E61000006372B4F4B2753E40D50FA0956AD84D40 | node | 9140565043 | 1 | | {"ford":"yes"} + 0101000020E6100000A91F8AB8EF753E40786FFBD467D84D40 | node | 9140576937 | 3 | | {"drain":"no"} + 0101000020E610000003D0285DFA753E40773BB13D69D84D40 | node | 9140576938 | 4 | | {"drain":"no"} + 0101000020E6100000E50D30F31D763E40BD885BAA77D84D40 | node | 9143069530 | 5 | | {"drain":"no","source:direction":"survey"} + 01010000009DA62AC82A763E4045F69C4F78D84D40 | node | 9143069534 | 1 | | {"amenity":"bench","backrest":"yes","material":"wood"} + 0101000020E6100000C712D6C6D8753E4043345FCA65D84D40 | node | 9143093777 | 1 | | {"manhole":"telecom","man_made":"manhole"} + 0101000020E6100000D4C3865DCA753E40F57C72B966D84D40 | node | 9143093778 | 1 | | {"manhole":"telecom","man_made":"manhole"} + 0101000020E61000002C80290307763E406939D0436DD84D40 | node | 9143093802 | 4 | | {"drain":"no"} + 0101000020E61000004A2943B005763E40CCBE863B72D84D40 | node | 9143093804 | 3 | | {"drain":"no"} + 0101000020E6100000CD80690712763E40D55A988576D84D40 | node | 9143093806 | 4 | | {"drain":"no"} + 0101000020E6100000529B38B9DF753E40A1F1E95674D84D40 | node | 9656736571 | 2 | | {"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"} + 0102000020E6100000040000004CD0155BF7753E4060048D9944D84D4078E0AD3DFD753E40454EBA884AD84D40B8C3CB7800763E40AF8273A14DD84D40E91A1CDB21763E40D872785270D84D40 | way | 30995960 | 42 | {9140727117,5251698420,1518870630,1632497615} | {"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} + 0102000020E6100000030000001ECB715DE7753E40840948A066D84D406372B4F4B2753E40D50FA0956AD84D4003756FEAA8753E4064B0E2546BD84D40 | way | 149099000 | 6 | {1621246509,9140565043,1621246531} | {"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"} + 0102000020E610000007000000B02770A1E1753E40716193EB5CD84D40691F86B1E0753E4093E34EE960D84D403AF70D02E1753E403908DFA062D84D40B08394E9E1753E40387870C163D84D40F1868FE3E2753E404A9BAA7B64D84D401A42846EE5753E40BA50549165D84D401ECB715DE7753E40840948A066D84D40 | way | 149099004 | 8 | {1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000140000008DCF0946CA753E4073A48EE964D84D40F3B4577AC8753E40DE8893A064D84D40534DFF48C7753E4067B4554964D84D4035C4C25AC6753E40F1B105CE63D84D4071F618F6C5753E40C175204663D84D40ACE0B721C6753E40FD7964BD62D84D40BE03F2DBC6753E40743A353C62D84D4058665B17C8753E408CF2CCCB61D84D40341477BCC9753E40815EB87361D84D40621C12ADCB753E408D3A843B61D84D400EA2B5A2CD753E4004858B2661D84D400D26B49BCF753E40933F733161D84D409B36887BD1753E40A5AA645B61D84D4094FD4EEED2753E40D48A259B61D84D402E60B829D4753E40E01E3AF361D84D407568A219D5753E40216AEC5C62D84D40F29DF3AED5753E40D328C9DF62D84D40C81E46ADD5753E40C7A8216063D84D40EC3CE070D5753E4044B060D163D84D4099863CDDD4753E404A3F863364D84D40 | way | 149099028 | 5 | {9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949} | {"barrier":"fence","colour":"green","fence_type":"wood","height":"2"} + 0102000020E610000017000000339875B5CB753E407073CF5F8DD84D4097321587D8753E40AC51B41776D84D40919DB7B1D9753E40893952C774D84D40547FCEEEDA753E404E976A0B74D84D40A7A503A3DC753E40B3EC496073D84D406FF02A10E2753E40A8E8A3E771D84D40304AD05FE8753E4055F0805770D84D40B735D88AEC753E40F116A3096FD84D40F1475167EE753E40929ED8F96DD84D4074266DAAEE753E40E027B3E66CD84D40AAF7AF07EE753E4076D954826AD84D405DA21FB2ED753E40B8B475CB69D84D408D6E7319ED753E40FA6184F068D84D40BD827EF0EB753E4066321CCF67D84D40473EAF78EA753E405AB8ACC266D84D40830074F3E8753E4043345FCA65D84D40EFEAB01DE7753E40FCFD62B664D84D40C69F4DB3E5753E408010C99063D84D40AF1B00BBE4753E407468476062D84D4038EB9D1BE4753E40B186302361D84D4050FF59F3E3753E4040EB2B595FD84D40626A4B1DE4753E4000A6B1625DD84D407A7E07F5E3753E40487254C95BD84D40 | way | 149099029 | 36 | {9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684} | {"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"} + 0102000020E61000000200000018C110830A763E40F99DCB796BD84D4003D0285DFA753E40773BB13D69D84D40 | way | 149099034 | 9 | {1632503255,9140576938} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000200000053CDACA580763E40BA707BDD7DD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294524 | 8 | {1239612692,1632497615} | {"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E61000002500000029290BBA18763E40CA56F20C75D84D40A4F6C7201C763E402FEE505E75D84D405BAE23B31F763E404159428875D84D4089DE985423763E40D618198975D84D403F96F4E626763E4082ECAB6175D84D4038E1B9522A763E40DC93D11275D84D4084CEB5792D763E40A14D0E9F74D84D40DB696B4430763E402418BD0974D84D40223E0B9D32763E404EB10F5773D84D40B653CE7234763E403156E58C72D84D40F6B2EDB435763E40DE431DB171D84D4014E0055B36763E40FC766DCA70D84D40915D0E6036763E4032EC8BDF6FD84D406D2B07C435763E40501FDCF86ED84D4027C7F88B34763E40684D3D1C6ED84D408DAC46C032763E40217365506DD84D4017540A7030763E40228D0A9C6CD84D403C365DAA2D763E40E71835046CD84D409745178A2A763E40ED93ED8D6BD84D401C785A2327763E4088FC8E3C6BD84D4065C0FE9023763E4076919D126BD84D40379089EF1F763E404C12F0106BD84D4080D82D5D1C763E409F3E5D386BD84D40888D68F118763E40469737876BD84D403CA06CCA15763E40169DD1FB6BD84D40E404B7FF12763E4093D222916CD84D409E3017A710763E406939D0436DD84D400A1B54D10E763E408694FA0D6ED84D40C9BB348F0D763E40D9A6C2E96ED84D40AC8E1CE90C763E40BB7372D06FD84D402F1114E40C763E40F03E7DBA70D84D4052431B800D763E4067CB03A271D84D4099A729B80E763E404E9DA27E72D84D4033C2DB8310763E4095777A4A73D84D40A91A18D412763E40955DD5FE73D84D405AB9179815763E403B12D49574D84D4029290BBA18763E40CA56F20C75D84D40 | way | 150294525 | 6 | {1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686} | {"name":"Дубовое кольцо"} + 0102000020E610000006000000E91A1CDB21763E40D872785270D84D40BA6A9E23F2753E40D7AEBFDB72D84D406A1492CCEA753E40E947C32973D84D4014854CE8E4753E40E370E65773D84D4040A0D8AFE0753E408368AD6873D84D40A7A503A3DC753E40B3EC496073D84D40 | way | 150294532 | 30 | {1632497615,1632220252,9140727238,9140727242,9140727239,1621246592} | {"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E6100000020000007A7E07F5E3753E40487254C95BD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294541 | 8 | {1239612684,1632497615} | {"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D405CF45F3134763E403ED6427F57D84D40 | way | 150294547 | 9 | {1632497615,1518870645} | {"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000006000000E2AB1DC539763E4007616EF772D84D40F33EE99F3B763E40F53D343D72D84D400442469B3E763E406198028871D84D40C05AB56B42763E405B7FA6B970D84D4076960FF747763E40263ED23B70D84D40003961C268763E40DF217B736ED84D40 | way | 152440395 | 6 | {1652587944,1652587948,1652587950,9143093800,1652587952,1652587953} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + 0102000020E61000000300000053F06F2B18763E400CCD751A69D84D40015AA95615763E400C299A6269D84D40F747CE7811763E4011E6D1E869D84D40 | way | 152442436 | 10 | {1652605207,9143204222,1632503254} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000400000039DB375211763E403DD68C0C72D84D40DAB91FA633763E40384D9F1D70D84D40E1FFD8356B763E40A4C74A276DD84D408B96F2107C763E40FEE4396C6CD84D40 | way | 311975108 | 20 | {3188928044,3177639362,8331430683,7911801321} | {"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"} + 0102000020E610000006000000C3DE1F4A0F763E40769A160676D84D408EBD288B0C763E4094298B6775D84D40D25C024B09763E405326906D74D84D4097A6ADB607763E4089C9C0A673D84D400E0B5AED06763E408F44793073D84D404A2943B005763E40CCBE863B72D84D40 | way | 313051687 | 8 | {1632503180,9143069533,9143093805,9143069532,1632503185,9143093804} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000E00000052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D40 | way | 426269715 | 5 | {4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051} | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} + 0102000020E61000000E000000A7A503A3DC753E40B3EC496073D84D40C19D55B0D7753E4090E854E872D84D40B25EB12BD2753E4054466D2C72D84D400AF1ED02CA753E40731D99FD70D84D40A252DB3CC4753E40B59C95FE6FD84D403A443756BD753E403E86D8AA6ED84D4091D6732DB5753E4069DDABFB6CD84D40529731AAB1753E40FEE4396C6CD84D40181527ADAE753E4016CBE31F6CD84D40671A03A1AB753E4028DAB0016CD84D409D1F9095A9753E401098E2056CD84D40211E8997A7753E40BDC799266CD84D4064D1CF2FA5753E40BD23BE6E6CD84D4083AE3374A2753E40F26492EC6CD84D40 | way | 438780267 | 20 | {1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957} | {"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"} + 0102000020E61000000200000077C5E7A969763E409FAEEE586CD84D40E91A1CDB21763E40D872785270D84D40 | way | 750779153 | 4 | {1632220250,1632497615} | {"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D40C0B56EDE93763E40407331618FD84D40 | way | 750779155 | 5 | {1632497615,1195120146} | {"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408D6E7319ED753E40FA6184F068D84D40 | way | 750779156 | 5 | {1632497615,1621246419} | {"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D402E69D6636C763E407143424AA2D84D40 | way | 750779157 | 4 | {1632497615,1652587960} | {"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} + 0102000020E6100000030000005F251FBB0B763E409FA97C748FD84D40BC9179E40F763E403DB4345C89D84D40E91A1CDB21763E40D872785270D84D40 | way | 750779158 | 4 | {9159459639,1239612686,1632497615} | {"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E6100000150000009D1F9095A9753E401098E2056CD84D40BFE90203AD753E40580229B16BD84D40649291B3B0753E40463B133F6BD84D40691B7FA2B2753E4058EEBBD86AD84D406372B4F4B2753E40D50FA0956AD84D40D4410356B3753E40053818456AD84D40387705ECB4753E40D6FB32BD69D84D4078B6476FB8753E4083458F2969D84D408751103CBE753E405309AAA168D84D402BC65455C3753E40B387AC2468D84D40FA21DB9EC5753E40C53A55BE67D84D40D06EE305C7753E407284B12A67D84D40F949B54FC7753E40EF1B5F7B66D84D40948444DAC6753E40A23C98B965D84D40FBB1497EC4753E40970AE01C64D84D40B4F116FEC2753E407A81A32E63D84D40028F5EC3C2753E406EBF7CB262D84D40074C9649C3753E40C233A14962D84D4095B88E71C5753E40CE8536A561D84D40641415BBC7753E40F84C9B1661D84D40F89969B1CA753E40468EBE9360D84D40 | way | 988944864 | 2 | {9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340} | {"highway":"path","surface":"ground"} + 0102000020E61000000200000005B4BE92F5753E4030BDFDB968D84D40A91F8AB8EF753E40786FFBD467D84D40 | way | 988944880 | 3 | {9140576936,9140576937} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000090000002DDB3D2FCB753E40BB3CE7B864D84D401523A69FCB753E40CC79C6BE64D84D405C7347FFCB753E402C82FFAD64D84D407AE81615CC753E4067107A9164D84D404A0856D5CB753E40201CFD7964D84D4062C0ED64CB753E400EDF1D7464D84D401B704C05CB753E40AFD6E48464D84D40FDFA7CEFCA753E40DE8893A064D84D402DDB3D2FCB753E40BB3CE7B864D84D40 | way | 989184163 | 1 | {9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + 0102000020E6100000090000006D4ECA49CD753E40BB0ED59464D84D40559632BACD753E40388CDD9964D84D409DE6D319CE753E402C54ED8964D84D40BA5BA32FCE753E4067E2676D64D84D408B7BE2EFCD753E408B2E145564D84D4079B4CC7DCD753E400EB10B5064D84D405CE3D81FCD753E401AE9FB5F64D84D403E6E090ACD753E40DE5A817C64D84D406D4ECA49CD753E40BB0ED59464D84D40 | way | 989184166 | 1 | {9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + 0102000020E610000003000000DB04CE0825763E407B99CD8877D84D40244D727621763E40BD885BAA77D84D40E50D30F31D763E40BD885BAA77D84D40 | way | 989211851 | 4 | {1652605211,9143069529,9143069530} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E610000002000000547FCEEEDA753E404E976A0B74D84D409F34796FB1753E40ED6E545D76D84D40 | way | 989211857 | 12 | {8650331583,4260007752} | {"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"} + 0102000020E610000006000000E4E3C924D9753E40AB31D75878D84D407EB6C480DB753E40B819130775D84D40B3AFE18EDC753E40DC7F643A74D84D4053CF8250DE753E4036278AEB73D84D4028E84020E1753E40EE320DD473D84D4067F3380CE6753E40AD437FB273D84D40 | way | 989211858 | 1 | {9143069609,9143069608,9143069607,9143069606,9143069605,9143069604} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000005000000F83CDA931B763E409540EF3268D84D40EACA67791E763E4028F4554D6BD84D406D75392520763E4088FC8E3C6BD84D400C95DAE621763E4088FC8E3C6BD84D400C61904F23763E4017B776476BD84D40 | way | 989211859 | 1 | {9143093728,9143093727,9143093726,9143093725,9143093724} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000006000000DC2F9FAC18763E40C5F29D4E68D84D405DA626C11B763E4010E099756BD84D401129BCBA19763E40F3C6EEA76BD84D4071091BF917763E408DE7D8E66BD84D40D7A6B1BD16763E40048E041A6CD84D40DB79D10D03763E405B1A097E65D84D40 | way | 989211860 | 1 | {9143093729,9143093730,9143093731,9143093732,9143093734,9143093733} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E6100000120000004C9A50D20D763E40D8CE9C9A70D84D402F2581BC0D763E40619E3AFB6FD84D406A0F20E80D763E402025766D6FD84D40994B05700E763E40DFABB1DF6ED84D4081936DE00E763E40F15E5A796ED84D40CE44227E0F763E40278CC11E6ED84D40E50929E4EF753E40FA75F1C869D84D407AE3A430EF753E40FA75F1C869D84D40F70489EDEE753E405FDF3DF669D84D40FDC1C073EF753E40DB70B3D36AD84D40A91F8AB8EF753E407016E5886BD84D40E50929E4EF753E40D4939E8E6CD84D404A737511F0753E4081D7C2876DD84D40DF4CF15DEF753E4039F7B2486ED84D40A4969CC9ED753E40C7C5072C6FD84D40D53A1680EB753E40321A9E0370D84D4066BFEE74E7753E4049CCFD1F71D84D405858703FE0753E40D1A9D0E572D84D40 | way | 989211861 | 1 | {9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E61000001100000061360186E5753E40839E72F15CD84D4061360186E5753E40E12AAAD95ED84D40FCCCB458E5753E408D823BAB60D84D407FABD09BE5753E40F2FFF4B061D84D40CC5C8539E6753E405078BFC062D84D409CEC551AE7753E40BBCC559863D84D40002258B0E8753E40146E43D664D84D400B687D25EB753E40A827E26366D84D400A34338EEC753E40E92ADD5D67D84D40A4969CC9ED753E40B9E8BF6268D84D402D32F092EE753E40063E50B868D84D409167F228F0753E401EDC42FC68D84D40AA9619DB10763E409214A28D6DD84D4086E8103812763E40D44BE71E6DD84D405B35199F13763E405744A8AD6CD84D40902E36AD14763E40CE609D746CD84D400C1E4BC400763E402B20A3F265D84D40 | way | 989211862 | 1 | {9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000013000000AA9212CCE2753E40716193EB5CD84D40AA9212CCE2753E40A69C2FF65ED84D404529C69EE2753E407B455CA560D84D400FFC5EF9E2753E40452C62D861D84D407A22E3ACE3753E40F16F86D162D84D400EC81462E4753E40A98F769263D84D40497E69F6E5753E40023164D064D84D407D433C6DE8753E4096EA025E66D84D40539044D4E9753E40D7EDFD5767D84D40F3AFE595EB753E405309AAA168D84D408755174BEC753E40B28174B169D84D408D124FD1EC753E40293C0DBD6AD84D4057E5E72BED753E40D57F31B66BD84D40DAC3036FED753E40C8B7D2C66CD84D4057E5E72BED753E4009BBCDC06DD84D40DBF74D06EC753E40740F64986ED84D403BD8AC44EA753E40C7C5072C6FD84D40962F1E94E6753E40DE77674870D84D40E8A8FE9CDD753E40E35C797F72D84D40 | way | 989211863 | 1 | {9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000002000000189A46EE44763E40A3795B446FD84D4076960FF747763E40263ED23B70D84D40 | way | 989211867 | 2 | {1652587955,1652587952} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + 0102000020E6100000020000004F7EE60709763E40E64647286CD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211868 | 4 | {9143093801,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000200000070140FDE0D763E40F3846FAB6AD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211869 | 4 | {1632503177,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000040000004510E7E104763E40C677184971D84D40DA45877604763E407FE5F7EC6FD84D40456C0B2A05763E40A465EE6B6ED84D402C80290307763E406939D0436DD84D40 | way | 989211870 | 4 | {1632503179,9143093803,1632503181,9143093802} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000040000004C27C8BE1A763E40289B728577D84D405951836918763E40A5EA686677D84D4096A3B6C315763E406AD2B71677D84D40CD80690712763E40D55A988576D84D40 | way | 989211871 | 4 | {1652605209,9143069531,1632503237,9143093806} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408682082758763E40ACE9D55B5ED84D40 | way | 991343632 | 2 | {1632497615,1518870652} | {"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000005000000EE2E06C545763E40804754A86ED84D40DF420D9535763E403895568D6FD84D406D2B07C435763E409D2CB5DE6FD84D40B51F84DB35763E40793C2D3F70D84D40D39453F135763E40678984A570D84D40 | way | 991343633 | 1 | {9159456550,9159456549,9159456545,9159456544,9159456543} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000005000000E871CE3E45763E40DA6443ED6DD84D40D985D50E35763E4092B245D26ED84D40FD474B8A34763E40F15E5A796ED84D40B09696EC33763E40278CC11E6ED84D40E006C60B33763E404B7C49BE6DD84D40 | way | 991343634 | 1 | {9159456552,9159456551,9159456548,9159456547,9159456546} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000002000000C305EADED4753E4022AAF06778D84D40CE93C6C3D6753E40FF97C68A75D84D40 | way | 991343661 | 1 | {9159459675,9159459674} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000002000000339875B5CB753E407073CF5F8DD84D40E91A1CDB21763E40D872785270D84D40 | way | 1042527594 | 11 | {9140727237,1632497615} | {"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"} + 0106000020E610000001000000010300000001000000250000002F1114E40C763E40F03E7DBA70D84D40AC8E1CE90C763E40BB7372D06FD84D40C9BB348F0D763E40D9A6C2E96ED84D400A1B54D10E763E408694FA0D6ED84D409E3017A710763E406939D0436DD84D40E404B7FF12763E4093D222916CD84D403CA06CCA15763E40169DD1FB6BD84D40888D68F118763E40469737876BD84D4080D82D5D1C763E409F3E5D386BD84D40379089EF1F763E404C12F0106BD84D4065C0FE9023763E4076919D126BD84D401C785A2327763E4088FC8E3C6BD84D409745178A2A763E40ED93ED8D6BD84D403C365DAA2D763E40E71835046CD84D4017540A7030763E40228D0A9C6CD84D408DAC46C032763E40217365506DD84D4027C7F88B34763E40684D3D1C6ED84D406D2B07C435763E40501FDCF86ED84D40915D0E6036763E4032EC8BDF6FD84D4014E0055B36763E40FC766DCA70D84D40F6B2EDB435763E40DE431DB171D84D40B653CE7234763E403156E58C72D84D40223E0B9D32763E404EB10F5773D84D40DB696B4430763E402418BD0974D84D4084CEB5792D763E40A14D0E9F74D84D4038E1B9522A763E40DC93D11275D84D403F96F4E626763E4082ECAB6175D84D4089DE985423763E40D618198975D84D405BAE23B31F763E404159428875D84D40A4F6C7201C763E402FEE505E75D84D4029290BBA18763E40CA56F20C75D84D405AB9179815763E403B12D49574D84D40A91A18D412763E40955DD5FE73D84D4033C2DB8310763E4095777A4A73D84D4099A729B80E763E404E9DA27E72D84D4052431B800D763E4067CB03A271D84D402F1114E40C763E40F03E7DBA70D84D40 | way | 150294525 | 6 | | {"name":"Дубовое кольцо"} + 0106000020E6100000010000000103000000010000000E00000017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D40 | way | 426269715 | 5 | | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} + 0106000020E61000000100000001030000000100000009000000FDFA7CEFCA753E40DE8893A064D84D401B704C05CB753E40AFD6E48464D84D4062C0ED64CB753E400EDF1D7464D84D404A0856D5CB753E40201CFD7964D84D407AE81615CC753E4067107A9164D84D405C7347FFCB753E402C82FFAD64D84D401523A69FCB753E40CC79C6BE64D84D402DDB3D2FCB753E40BB3CE7B864D84D40FDFA7CEFCA753E40DE8893A064D84D40 | way | 989184163 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + 0106000020E610000001000000010300000001000000090000003E6E090ACD753E40DE5A817C64D84D405CE3D81FCD753E401AE9FB5F64D84D4079B4CC7DCD753E400EB10B5064D84D408B7BE2EFCD753E408B2E145564D84D40BA5BA32FCE753E4067E2676D64D84D409DE6D319CE753E402C54ED8964D84D40559632BACD753E40388CDD9964D84D406D4ECA49CD753E40BB0ED59464D84D403E6E090ACD753E40DE5A817C64D84D40 | way | 989184166 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} +(111 rows) + +--Testcase 73: +UPDATE "♁" SET geom = ST_SetSRID(geom, 4326); +--Testcase 74: +INSERT INTO "♁ FDW" SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; +--Testcase 75: +ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE bytea; +--Testcase 76: +SELECT * FROM "♁ FDW"; + geom | osm_type | osm_id | ver | arr | t +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + \x0001e6100000f747ce7811763e4011e6d1e869d84d40f747ce7811763e4011e6d1e869d84d407c01000000f747ce7811763e4011e6d1e869d84d40fe | node | 1632503254 | 6 | | {"drain":"no"} + \x0001e610000003756feaa8753e4064b0e2546bd84d4003756feaa8753e4064b0e2546bd84d407c0100000003756feaa8753e4064b0e2546bd84d40fe | node | 1621246531 | 4 | | {"drain":"disperse"} + \x0001e6100000621c12adcb753e408d3a843b61d84d40621c12adcb753e408d3a843b61d84d407c01000000621c12adcb753e408d3a843b61d84d40fe | node | 1621246620 | 24 | | {"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"} + \x0001e6100000223e0b9d32763e404eb10f5773d84d40223e0b9d32763e404eb10f5773d84d407c01000000223e0b9d32763e404eb10f5773d84d40fe | node | 1632220259 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e6100000915d0e6036763e4032ec8bdf6fd84d40915d0e6036763e4032ec8bdf6fd84d407c01000000915d0e6036763e4032ec8bdf6fd84d40fe | node | 1632220283 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e6100000f6b2edb435763e40de431db171d84d40f6b2edb435763e40de431db171d84d407c01000000f6b2edb435763e40de431db171d84d40fe | node | 1632220292 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e610000065c0fe9023763e4076919d126bd84d4065c0fe9023763e4076919d126bd84d407c0100000065c0fe9023763e4076919d126bd84d40fe | node | 1632220315 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e61000009745178a2a763e40ed93ed8d6bd84d409745178a2a763e40ed93ed8d6bd84d407c010000009745178a2a763e40ed93ed8d6bd84d40fe | node | 1632220319 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e6100000c9bb348f0d763e40d9a6c2e96ed84d40c9bb348f0d763e40d9a6c2e96ed84d407c01000000c9bb348f0d763e40d9a6c2e96ed84d40fe | node | 1632220350 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e61000009e3017a710763e406939d0436dd84d409e3017a710763e406939d0436dd84d407c010000009e3017a710763e406939d0436dd84d40fe | node | 1632220355 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e61000003ca06cca15763e40169dd1fb6bd84d403ca06cca15763e40169dd1fb6bd84d407c010000003ca06cca15763e40169dd1fb6bd84d40fe | node | 1632220358 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e61000002f1114e40c763e40f03e7dba70d84d402f1114e40c763e40f03e7dba70d84d407c010000002f1114e40c763e40f03e7dba70d84d40fe | node | 1632220359 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e61000005bae23b31f763e404159428875d84d405bae23b31f763e404159428875d84d407c010000005bae23b31f763e404159428875d84d40fe | node | 1632220364 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e610000099a729b80e763e404e9da27e72d84d4099a729b80e763e404e9da27e72d84d407c0100000099a729b80e763e404e9da27e72d84d40fe | node | 1632220366 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e610000017540a7030763e40228d0a9c6cd84d4017540a7030763e40228d0a9c6cd84d407c0100000017540a7030763e40228d0a9c6cd84d40fe | node | 1632220378 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e610000084ceb5792d763e40a14d0e9f74d84d4084ceb5792d763e40a14d0e9f74d84d407c0100000084ceb5792d763e40a14d0e9f74d84d40fe | node | 1632220590 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e610000029290bba18763e40ca56f20c75d84d4029290bba18763e40ca56f20c75d84d407c0100000029290bba18763e40ca56f20c75d84d40fe | node | 1632220686 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + \x0001e610000003756feaa8753e40840948a066d84d401ecb715de7753e4064b0e2546bd84d407c02000000030000001ecb715de7753e40840948a066d84d406372b4f4b2753e40d50fa0956ad84d4003756feaa8753e4064b0e2546bd84d40fe | way | 149099000 | 6 | {1621246509,9140565043,1621246531} | {"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"} + \x0001e6100000189a46ee44763e40a3795b446fd84d4076960ff747763e40263ed23b70d84d407c0200000002000000189a46ee44763e40a3795b446fd84d4076960ff747763e40263ed23b70d84d40fe | way | 989211867 | 2 | {1652587955,1652587952} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + \x0001e6100000bde2a9471a763e40db0e57186cd84d40bde2a9471a763e40db0e57186cd84d407c01000000bde2a9471a763e40db0e57186cd84d40fe | node | 1632497609 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"} + \x0001e610000025f14d2e21763e401c469ca96bd84d4025f14d2e21763e401c469ca96bd84d407c0100000025f14d2e21763e401c469ca96bd84d40fe | node | 1632497610 | 30 | | {"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"} + \x0001e6100000ea79371614763e40b0ff3a376dd84d40ea79371614763e40b0ff3a376dd84d407c01000000ea79371614763e40b0ff3a376dd84d40fe | node | 1632497611 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"} + \x0001e61000002152787533763e400e10711871d84d402152787533763e400e10711871d84d407c010000002152787533763e400e10711871d84d40fe | node | 1632497612 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"} + \x0001e6100000a9f8bf232a763e401cd0d2156cd84d40a9f8bf232a763e401cd0d2156cd84d407c01000000a9f8bf232a763e401cd0d2156cd84d40fe | node | 1632497613 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"} + \x0001e6100000b1a206d330763e40aa5670896dd84d40b1a206d330763e40aa5670896dd84d407c01000000b1a206d330763e40aa5670896dd84d40fe | node | 1632497614 | 29 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"} + \x0001e61000003a0d07f824763e408f9a650575d84d403a0d07f824763e408f9a650575d84d407c010000003a0d07f824763e408f9a650575d84d40fe | node | 4912277783 | 4 | | {"board_type":"history","information":"board","name":"Меркурий","tourism":"information"} + \x0001e61000003e038f1436763e40054c851d6bd84d40d39dcce440763e40e09744076ed84d407c02000000040000003e038f1436763e40054c851d6bd84d40719417f439763e406fa01bf56bd84d4034b275ba3d763e40ec5fa3f66cd84d40d39dcce440763e40e09744076ed84d40fe | way | 152442438 | 8 | {1652605205,1652605201,1652605200,1652587958} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + \x0001e6100000e91a1cdb21763e40d872785270d84d40e91a1cdb21763e40d872785270d84d407c01000000e91a1cdb21763e40d872785270d84d40fe | node | 1632497615 | 34 | | {"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"} + \x0001e6100000d243238e2b763e4083d83e8974d84d40d243238e2b763e4083d83e8974d84d407c01000000d243238e2b763e4083d83e8974d84d40fe | node | 1632497616 | 26 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"} + \x0001e61000005f341aaf2f763e40f409eaa573d84d405f341aaf2f763e40f409eaa573d84d407c010000005f341aaf2f763e40f409eaa573d84d40fe | node | 1632497617 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"} + \x0001e61000004232d3ac22763e402f922c1675d84d404232d3ac22763e402f922c1675d84d407c010000004232d3ac22763e402f922c1675d84d40fe | node | 1632497618 | 30 | | {"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"} + \x0001e6100000ac634b4519763e40b28aeda474d84d40ac634b4519763e40b28aeda474d84d407c01000000ac634b4519763e40b28aeda474d84d40fe | node | 1632497619 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"} + \x0001e6100000d32934b511763e40ad2f12da72d84d40d32934b511763e40ad2f12da72d84d407c01000000d32934b511763e40ad2f12da72d84d40fe | node | 1632497620 | 31 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"} + \x0001e6100000cea046c60f763e40d95e0b7a6fd84d40cea046c60f763e40d95e0b7a6fd84d407c01000000cea046c60f763e40d95e0b7a6fd84d40fe | node | 1632497621 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"} + \x0001e6100000003961c268763e40df217b736ed84d40003961c268763e40df217b736ed84d407c01000000003961c268763e40df217b736ed84d40fe | node | 1652587953 | 5 | | {"drain":"no"} + \x0001e6100000d39dcce440763e40e09744076ed84d40d39dcce440763e40e09744076ed84d407c01000000d39dcce440763e40e09744076ed84d40fe | node | 1652587958 | 5 | | {"drain":"no"} + \x0001e6100000dab91fa633763e40384d9f1d70d84d40dab91fa633763e40384d9f1d70d84d407c01000000dab91fa633763e40384d9f1d70d84d40fe | node | 3177639362 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} + \x0001e610000039db375211763e403dd68c0c72d84d4039db375211763e403dd68c0c72d84d407c0100000039db375211763e403dd68c0c72d84d40fe | node | 3188928044 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} + \x0001e61000003b246bc317763e405451611168d84d403b246bc317763e405451611168d84d407c010000003b246bc317763e405451611168d84d40fe | node | 3218618266 | 4 | | {"amenity":"bench","backrest":"yes","material":"wood"} + \x0001e610000049e70d411f763e403abb6bbf6bd84d4049e70d411f763e403abb6bbf6bd84d407c0100000049e70d411f763e403abb6bbf6bd84d40fe | node | 4912277772 | 4 | | {"board_type":"history","information":"board","name":"Флора","tourism":"information"} + \x0001e61000001587d80528763e4034e48eed6bd84d401587d80528763e4034e48eed6bd84d407c010000001587d80528763e4034e48eed6bd84d40fe | node | 4912277773 | 4 | | {"board_type":"history","information":"board","name":"Урания","tourism":"information"} + \x0001e6100000acab02b518763e40f8b138526cd84d40acab02b518763e40f8b138526cd84d407c01000000acab02b518763e40f8b138526cd84d40fe | node | 4912277774 | 4 | | {"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"} + \x0001e6100000b23275b22f763e40153b75406dd84d40b23275b22f763e40153b75406dd84d407c01000000b23275b22f763e40153b75406dd84d40fe | node | 4912277775 | 4 | | {"board_type":"history","information":"board","name":"Клио","tourism":"information"} + \x0001e61000007335689e12763e40098dbb9c6dd84d407335689e12763e40098dbb9c6dd84d407c010000007335689e12763e40098dbb9c6dd84d40fe | node | 4912277776 | 4 | | {"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"} + \x0001e6100000c23a44920f763e40af97a60870d84d40c23a44920f763e40af97a60870d84d407c01000000c23a44920f763e40af97a60870d84d40fe | node | 4912277777 | 4 | | {"board_type":"history","information":"board","name":"Талия","tourism":"information"} + \x0001e610000074acf7c033763e404914b58f70d84d4074acf7c033763e404914b58f70d84d407c0100000074acf7c033763e404914b58f70d84d40fe | node | 4912277778 | 4 | | {"board_type":"history","information":"board","name":"Калиопа","tourism":"information"} + \x0001e6100000cdf0fa2713763e40d105f52d73d84d40cdf0fa2713763e40d105f52d73d84d407c01000000cdf0fa2713763e40d105f52d73d84d40fe | node | 4912277779 | 4 | | {"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"} + \x0001e6100000b7a7f5c830763e40e342d43373d84d40b7a7f5c830763e40e342d43373d84d407c01000000b7a7f5c830763e40e342d43373d84d40fe | node | 4912277780 | 4 | | {"board_type":"history","information":"board","name":"Полигимния","tourism":"information"} + \x0001e610000096253acb2c763e402474e15174d84d4096253acb2c763e402474e15174d84d407c0100000096253acb2c763e402474e15174d84d40fe | node | 4912277781 | 4 | | {"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"} + \x0001e610000045da21591b763e4065bf93bb74d84d4045da21591b763e4065bf93bb74d84d407c0100000045da21591b763e4065bf93bb74d84d40fe | node | 4912277782 | 4 | | {"board_type":"history","information":"board","name":"Эрато","tourism":"information"} + \x0001e610000078e0ad3dfd753e40454eba884ad84d4078e0ad3dfd753e40454eba884ad84d407c0100000078e0ad3dfd753e40454eba884ad84d40fe | node | 5251698420 | 25 | | {"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"} + \x0001e610000042af3f89cf753e407f805ab164d84d4042af3f89cf753e407f805ab164d84d407c0100000042af3f89cf753e407f805ab164d84d40fe | node | 6758903438 | 6 | | {"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"} + \x0001e6100000e1ffd8356b763e40a4c74a276dd84d40e1ffd8356b763e40a4c74a276dd84d407c01000000e1ffd8356b763e40a4c74a276dd84d40fe | node | 8331430683 | 3 | | {"inlet":"grate","manhole":"drain","man_made":"manhole"} + \x0001e6100000ca71022e23763e40f086342a70d84d40ca71022e23763e40f086342a70d84d407c01000000ca71022e23763e40f086342a70d84d40fe | node | 8530936200 | 1 | | {"board_type":"history","information":"board","name":"Аполлон","tourism":"information"} + \x0001e61000006372b4f4b2753e40d50fa0956ad84d406372b4f4b2753e40d50fa0956ad84d407c010000006372b4f4b2753e40d50fa0956ad84d40fe | node | 9140565043 | 1 | | {"ford":"yes"} + \x0001e6100000a91f8ab8ef753e40786ffbd467d84d40a91f8ab8ef753e40786ffbd467d84d407c01000000a91f8ab8ef753e40786ffbd467d84d40fe | node | 9140576937 | 3 | | {"drain":"no"} + \x0001e610000003d0285dfa753e40773bb13d69d84d4003d0285dfa753e40773bb13d69d84d407c0100000003d0285dfa753e40773bb13d69d84d40fe | node | 9140576938 | 4 | | {"drain":"no"} + \x0001e6100000e50d30f31d763e40bd885baa77d84d40e50d30f31d763e40bd885baa77d84d407c01000000e50d30f31d763e40bd885baa77d84d40fe | node | 9143069530 | 5 | | {"drain":"no","source:direction":"survey"} + \x0001e61000009da62ac82a763e4045f69c4f78d84d409da62ac82a763e4045f69c4f78d84d407c010000009da62ac82a763e4045f69c4f78d84d40fe | node | 9143069534 | 1 | | {"amenity":"bench","backrest":"yes","material":"wood"} + \x0001e6100000c712d6c6d8753e4043345fca65d84d40c712d6c6d8753e4043345fca65d84d407c01000000c712d6c6d8753e4043345fca65d84d40fe | node | 9143093777 | 1 | | {"manhole":"telecom","man_made":"manhole"} + \x0001e6100000d4c3865dca753e40f57c72b966d84d40d4c3865dca753e40f57c72b966d84d407c01000000d4c3865dca753e40f57c72b966d84d40fe | node | 9143093778 | 1 | | {"manhole":"telecom","man_made":"manhole"} + \x0001e61000002c80290307763e406939d0436dd84d402c80290307763e406939d0436dd84d407c010000002c80290307763e406939d0436dd84d40fe | node | 9143093802 | 4 | | {"drain":"no"} + \x0001e61000004a2943b005763e40ccbe863b72d84d404a2943b005763e40ccbe863b72d84d407c010000004a2943b005763e40ccbe863b72d84d40fe | node | 9143093804 | 3 | | {"drain":"no"} + \x0001e6100000cd80690712763e40d55a988576d84d40cd80690712763e40d55a988576d84d407c01000000cd80690712763e40d55a988576d84d40fe | node | 9143093806 | 4 | | {"drain":"no"} + \x0001e6100000529b38b9df753e40a1f1e95674d84d40529b38b9df753e40a1f1e95674d84d407c01000000529b38b9df753e40a1f1e95674d84d40fe | node | 9656736571 | 2 | | {"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"} + \x0001e61000004cd0155bf7753e4060048d9944d84d40e91a1cdb21763e40d872785270d84d407c02000000040000004cd0155bf7753e4060048d9944d84d4078e0ad3dfd753e40454eba884ad84d40b8c3cb7800763e40af8273a14dd84d40e91a1cdb21763e40d872785270d84d40fe | way | 30995960 | 42 | {9140727117,5251698420,1518870630,1632497615} | {"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} + \x0001e6100000691f86b1e0753e40716193eb5cd84d401ecb715de7753e40840948a066d84d407c0200000007000000b02770a1e1753e40716193eb5cd84d40691f86b1e0753e4093e34ee960d84d403af70d02e1753e403908dfa062d84d40b08394e9e1753e40387870c163d84d40f1868fe3e2753e404a9baa7b64d84d401a42846ee5753e40ba50549165d84d401ecb715de7753e40840948a066d84d40fe | way | 149099004 | 8 | {1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e610000071f618f6c5753e4004858b2661d84d40f29df3aed5753e4073a48ee964d84d407c02000000140000008dcf0946ca753e4073a48ee964d84d40f3b4577ac8753e40de8893a064d84d40534dff48c7753e4067b4554964d84d4035c4c25ac6753e40f1b105ce63d84d4071f618f6c5753e40c175204663d84d40ace0b721c6753e40fd7964bd62d84d40be03f2dbc6753e40743a353c62d84d4058665b17c8753e408cf2cccb61d84d40341477bcc9753e40815eb87361d84d40621c12adcb753e408d3a843b61d84d400ea2b5a2cd753e4004858b2661d84d400d26b49bcf753e40933f733161d84d409b36887bd1753e40a5aa645b61d84d4094fd4eeed2753e40d48a259b61d84d402e60b829d4753e40e01e3af361d84d407568a219d5753e40216aec5c62d84d40f29df3aed5753e40d328c9df62d84d40c81e46add5753e40c7a8216063d84d40ec3ce070d5753e4044b060d163d84d4099863cddd4753e404a3f863364d84d40fe | way | 149099028 | 5 | {9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949} | {"barrier":"fence","colour":"green","fence_type":"wood","height":"2"} + \x0001e6100000339875b5cb753e40487254c95bd84d4074266daaee753e407073cf5f8dd84d407c0200000017000000339875b5cb753e407073cf5f8dd84d4097321587d8753e40ac51b41776d84d40919db7b1d9753e40893952c774d84d40547fceeeda753e404e976a0b74d84d40a7a503a3dc753e40b3ec496073d84d406ff02a10e2753e40a8e8a3e771d84d40304ad05fe8753e4055f0805770d84d40b735d88aec753e40f116a3096fd84d40f1475167ee753e40929ed8f96dd84d4074266daaee753e40e027b3e66cd84d40aaf7af07ee753e4076d954826ad84d405da21fb2ed753e40b8b475cb69d84d408d6e7319ed753e40fa6184f068d84d40bd827ef0eb753e4066321ccf67d84d40473eaf78ea753e405ab8acc266d84d40830074f3e8753e4043345fca65d84d40efeab01de7753e40fcfd62b664d84d40c69f4db3e5753e408010c99063d84d40af1b00bbe4753e407468476062d84d4038eb9d1be4753e40b186302361d84d4050ff59f3e3753e4040eb2b595fd84d40626a4b1de4753e4000a6b1625dd84d407a7e07f5e3753e40487254c95bd84d40fe | way | 149099029 | 36 | {9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684} | {"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"} + \x0001e610000003d0285dfa753e40773bb13d69d84d4018c110830a763e40f99dcb796bd84d407c020000000200000018c110830a763e40f99dcb796bd84d4003d0285dfa753e40773bb13d69d84d40fe | way | 149099034 | 9 | {1632503255,9140576938} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e6100000e91a1cdb21763e40d872785270d84d4053cdaca580763e40ba707bdd7dd84d407c020000000200000053cdaca580763e40ba707bdd7dd84d40e91a1cdb21763e40d872785270d84d40fe | way | 150294524 | 8 | {1239612692,1632497615} | {"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e61000002f1114e40c763e404c12f0106bd84d40915d0e6036763e40d618198975d84d407c020000002500000029290bba18763e40ca56f20c75d84d40a4f6c7201c763e402fee505e75d84d405bae23b31f763e404159428875d84d4089de985423763e40d618198975d84d403f96f4e626763e4082ecab6175d84d4038e1b9522a763e40dc93d11275d84d4084ceb5792d763e40a14d0e9f74d84d40db696b4430763e402418bd0974d84d40223e0b9d32763e404eb10f5773d84d40b653ce7234763e403156e58c72d84d40f6b2edb435763e40de431db171d84d4014e0055b36763e40fc766dca70d84d40915d0e6036763e4032ec8bdf6fd84d406d2b07c435763e40501fdcf86ed84d4027c7f88b34763e40684d3d1c6ed84d408dac46c032763e40217365506dd84d4017540a7030763e40228d0a9c6cd84d403c365daa2d763e40e71835046cd84d409745178a2a763e40ed93ed8d6bd84d401c785a2327763e4088fc8e3c6bd84d4065c0fe9023763e4076919d126bd84d40379089ef1f763e404c12f0106bd84d4080d82d5d1c763e409f3e5d386bd84d40888d68f118763e40469737876bd84d403ca06cca15763e40169dd1fb6bd84d40e404b7ff12763e4093d222916cd84d409e3017a710763e406939d0436dd84d400a1b54d10e763e408694fa0d6ed84d40c9bb348f0d763e40d9a6c2e96ed84d40ac8e1ce90c763e40bb7372d06fd84d402f1114e40c763e40f03e7dba70d84d4052431b800d763e4067cb03a271d84d4099a729b80e763e404e9da27e72d84d4033c2db8310763e4095777a4a73d84d40a91a18d412763e40955dd5fe73d84d405ab9179815763e403b12d49574d84d4029290bba18763e40ca56f20c75d84d40fe | way | 150294525 | 6 | {1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686} | {"name":"Дубовое кольцо"} + \x0001e6100000a7a503a3dc753e40d872785270d84d40e91a1cdb21763e408368ad6873d84d407c0200000006000000e91a1cdb21763e40d872785270d84d40ba6a9e23f2753e40d7aebfdb72d84d406a1492ccea753e40e947c32973d84d4014854ce8e4753e40e370e65773d84d4040a0d8afe0753e408368ad6873d84d40a7a503a3dc753e40b3ec496073d84d40fe | way | 150294532 | 30 | {1632497615,1632220252,9140727238,9140727242,9140727239,1621246592} | {"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e61000007a7e07f5e3753e40487254c95bd84d40e91a1cdb21763e40d872785270d84d407c02000000020000007a7e07f5e3753e40487254c95bd84d40e91a1cdb21763e40d872785270d84d40fe | way | 150294541 | 8 | {1239612684,1632497615} | {"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e6100000e91a1cdb21763e403ed6427f57d84d405cf45f3134763e40d872785270d84d407c0200000002000000e91a1cdb21763e40d872785270d84d405cf45f3134763e403ed6427f57d84d40fe | way | 150294547 | 9 | {1632497615,1518870645} | {"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e6100000e2ab1dc539763e40df217b736ed84d40003961c268763e4007616ef772d84d407c0200000006000000e2ab1dc539763e4007616ef772d84d40f33ee99f3b763e40f53d343d72d84d400442469b3e763e406198028871d84d40c05ab56b42763e405b7fa6b970d84d4076960ff747763e40263ed23b70d84d40003961c268763e40df217b736ed84d40fe | way | 152440395 | 6 | {1652587944,1652587948,1652587950,9143093800,1652587952,1652587953} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + \x0001e6100000f747ce7811763e400ccd751a69d84d4053f06f2b18763e4011e6d1e869d84d407c020000000300000053f06f2b18763e400ccd751a69d84d40015aa95615763e400c299a6269d84d40f747ce7811763e4011e6d1e869d84d40fe | way | 152442436 | 10 | {1652605207,9143204222,1632503254} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e610000039db375211763e40fee4396c6cd84d408b96f2107c763e403dd68c0c72d84d407c020000000400000039db375211763e403dd68c0c72d84d40dab91fa633763e40384d9f1d70d84d40e1ffd8356b763e40a4c74a276dd84d408b96f2107c763e40fee4396c6cd84d40fe | way | 311975108 | 20 | {3188928044,3177639362,8331430683,7911801321} | {"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"} + \x0001e61000004a2943b005763e40ccbe863b72d84d40c3de1f4a0f763e40769a160676d84d407c0200000006000000c3de1f4a0f763e40769a160676d84d408ebd288b0c763e4094298b6775d84d40d25c024b09763e405326906d74d84d4097a6adb607763e4089c9c0a673d84d400e0b5aed06763e408f44793073d84d404a2943b005763e40ccbe863b72d84d40fe | way | 313051687 | 8 | {1632503180,9143069533,9143093805,9143069532,1632503185,9143093804} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e610000017e5e324de753e405add45f35bd84d4009afb893e3753e407e1efef565d84d407c020000000e00000052f75c01e0753e405add45f35bd84d401150864fdf753e403379b93e62d84d40342669a3df753e408c90701063d84d40d57954fcdf753e403e4f4d9363d84d40879455c7e0753e409105f12664d84d40572426a8e1753e403287eea364d84d4009afb893e3753e4084f5dac765d84d4074513e4ee2753e407e1efef565d84d40bdc1bc6ce0753e404925e1e764d84d4088c89f5edf753e405c4e531564d84d40649698c2de753e40d9e5006663d84d4017e5e324de753e406e63586a62d84d4029081edfde753e40addba0f65bd84d4052f75c01e0753e405add45f35bd84d40fe | way | 426269715 | 5 | {4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051} | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} + \x0001e610000083ae3374a2753e4028dab0016cd84d40a7a503a3dc753e40b3ec496073d84d407c020000000e000000a7a503a3dc753e40b3ec496073d84d40c19d55b0d7753e4090e854e872d84d40b25eb12bd2753e4054466d2c72d84d400af1ed02ca753e40731d99fd70d84d40a252db3cc4753e40b59c95fe6fd84d403a443756bd753e403e86d8aa6ed84d4091d6732db5753e4069ddabfb6cd84d40529731aab1753e40fee4396c6cd84d40181527adae753e4016cbe31f6cd84d40671a03a1ab753e4028dab0016cd84d409d1f9095a9753e401098e2056cd84d40211e8997a7753e40bdc799266cd84d4064d1cf2fa5753e40bd23be6e6cd84d4083ae3374a2753e40f26492ec6cd84d40fe | way | 438780267 | 20 | {1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957} | {"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"} + \x0001e6100000e91a1cdb21763e409faeee586cd84d4077c5e7a969763e40d872785270d84d407c020000000200000077c5e7a969763e409faeee586cd84d40e91a1cdb21763e40d872785270d84d40fe | way | 750779153 | 4 | {1632220250,1632497615} | {"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e6100000e91a1cdb21763e40d872785270d84d40c0b56ede93763e40407331618fd84d407c0200000002000000e91a1cdb21763e40d872785270d84d40c0b56ede93763e40407331618fd84d40fe | way | 750779155 | 5 | {1632497615,1195120146} | {"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e61000008d6e7319ed753e40fa6184f068d84d40e91a1cdb21763e40d872785270d84d407c0200000002000000e91a1cdb21763e40d872785270d84d408d6e7319ed753e40fa6184f068d84d40fe | way | 750779156 | 5 | {1632497615,1621246419} | {"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e6100000e91a1cdb21763e40d872785270d84d402e69d6636c763e407143424aa2d84d407c0200000002000000e91a1cdb21763e40d872785270d84d402e69d6636c763e407143424aa2d84d40fe | way | 750779157 | 4 | {1632497615,1652587960} | {"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} + \x0001e61000005f251fbb0b763e40d872785270d84d40e91a1cdb21763e409fa97c748fd84d407c02000000030000005f251fbb0b763e409fa97c748fd84d40bc9179e40f763e403db4345c89d84d40e91a1cdb21763e40d872785270d84d40fe | way | 750779158 | 4 | {9159459639,1239612686,1632497615} | {"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e61000009d1f9095a9753e40468ebe9360d84d40f89969b1ca753e401098e2056cd84d407c02000000150000009d1f9095a9753e401098e2056cd84d40bfe90203ad753e40580229b16bd84d40649291b3b0753e40463b133f6bd84d40691b7fa2b2753e4058eebbd86ad84d406372b4f4b2753e40d50fa0956ad84d40d4410356b3753e40053818456ad84d40387705ecb4753e40d6fb32bd69d84d4078b6476fb8753e4083458f2969d84d408751103cbe753e405309aaa168d84d402bc65455c3753e40b387ac2468d84d40fa21db9ec5753e40c53a55be67d84d40d06ee305c7753e407284b12a67d84d40f949b54fc7753e40ef1b5f7b66d84d40948444dac6753e40a23c98b965d84d40fbb1497ec4753e40970ae01c64d84d40b4f116fec2753e407a81a32e63d84d40028f5ec3c2753e406ebf7cb262d84d40074c9649c3753e40c233a14962d84d4095b88e71c5753e40ce8536a561d84d40641415bbc7753e40f84c9b1661d84d40f89969b1ca753e40468ebe9360d84d40fe | way | 988944864 | 2 | {9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340} | {"highway":"path","surface":"ground"} + \x0001e6100000a91f8ab8ef753e40786ffbd467d84d4005b4be92f5753e4030bdfdb968d84d407c020000000200000005b4be92f5753e4030bdfdb968d84d40a91f8ab8ef753e40786ffbd467d84d40fe | way | 988944880 | 3 | {9140576936,9140576937} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e6100000fdfa7cefca753e400edf1d7464d84d407ae81615cc753e40cc79c6be64d84d407c02000000090000002ddb3d2fcb753e40bb3ce7b864d84d401523a69fcb753e40cc79c6be64d84d405c7347ffcb753e402c82ffad64d84d407ae81615cc753e4067107a9164d84d404a0856d5cb753e40201cfd7964d84d4062c0ed64cb753e400edf1d7464d84d401b704c05cb753e40afd6e48464d84d40fdfa7cefca753e40de8893a064d84d402ddb3d2fcb753e40bb3ce7b864d84d40fe | way | 989184163 | 1 | {9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + \x0001e61000003e6e090acd753e400eb10b5064d84d40ba5ba32fce753e40388cdd9964d84d407c02000000090000006d4eca49cd753e40bb0ed59464d84d40559632bacd753e40388cdd9964d84d409de6d319ce753e402c54ed8964d84d40ba5ba32fce753e4067e2676d64d84d408b7be2efcd753e408b2e145564d84d4079b4cc7dcd753e400eb10b5064d84d405ce3d81fcd753e401ae9fb5f64d84d403e6e090acd753e40de5a817c64d84d406d4eca49cd753e40bb0ed59464d84d40fe | way | 989184166 | 1 | {9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + \x0001e6100000e50d30f31d763e407b99cd8877d84d40db04ce0825763e40bd885baa77d84d407c0200000003000000db04ce0825763e407b99cd8877d84d40244d727621763e40bd885baa77d84d40e50d30f31d763e40bd885baa77d84d40fe | way | 989211851 | 4 | {1652605211,9143069529,9143069530} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e61000009f34796fb1753e404e976a0b74d84d40547fceeeda753e40ed6e545d76d84d407c0200000002000000547fceeeda753e404e976a0b74d84d409f34796fb1753e40ed6e545d76d84d40fe | way | 989211857 | 12 | {8650331583,4260007752} | {"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"} + \x0001e6100000e4e3c924d9753e40ad437fb273d84d4067f3380ce6753e40ab31d75878d84d407c0200000006000000e4e3c924d9753e40ab31d75878d84d407eb6c480db753e40b819130775d84d40b3afe18edc753e40dc7f643a74d84d4053cf8250de753e4036278aeb73d84d4028e84020e1753e40ee320dd473d84d4067f3380ce6753e40ad437fb273d84d40fe | way | 989211858 | 1 | {9143069609,9143069608,9143069607,9143069606,9143069605,9143069604} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000f83cda931b763e409540ef3268d84d400c61904f23763e4028f4554d6bd84d407c0200000005000000f83cda931b763e409540ef3268d84d40eaca67791e763e4028f4554d6bd84d406d75392520763e4088fc8e3c6bd84d400c95dae621763e4088fc8e3c6bd84d400c61904f23763e4017b776476bd84d40fe | way | 989211859 | 1 | {9143093728,9143093727,9143093726,9143093725,9143093724} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000db79d10d03763e405b1a097e65d84d405da626c11b763e40048e041a6cd84d407c0200000006000000dc2f9fac18763e40c5f29d4e68d84d405da626c11b763e4010e099756bd84d401129bcba19763e40f3c6eea76bd84d4071091bf917763e408de7d8e66bd84d40d7a6b1bd16763e40048e041a6cd84d40db79d10d03763e405b1a097e65d84d40fe | way | 989211860 | 1 | {9143093729,9143093730,9143093731,9143093732,9143093734,9143093733} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e61000005858703fe0753e40fa75f1c869d84d40ce44227e0f763e40d1a9d0e572d84d407c02000000120000004c9a50d20d763e40d8ce9c9a70d84d402f2581bc0d763e40619e3afb6fd84d406a0f20e80d763e402025766d6fd84d40994b05700e763e40dfabb1df6ed84d4081936de00e763e40f15e5a796ed84d40ce44227e0f763e40278cc11e6ed84d40e50929e4ef753e40fa75f1c869d84d407ae3a430ef753e40fa75f1c869d84d40f70489edee753e405fdf3df669d84d40fdc1c073ef753e40db70b3d36ad84d40a91f8ab8ef753e407016e5886bd84d40e50929e4ef753e40d4939e8e6cd84d404a737511f0753e4081d7c2876dd84d40df4cf15def753e4039f7b2486ed84d40a4969cc9ed753e40c7c5072c6fd84d40d53a1680eb753e40321a9e0370d84d4066bfee74e7753e4049ccfd1f71d84d405858703fe0753e40d1a9d0e572d84d40fe | way | 989211861 | 1 | {9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000fcccb458e5753e40839e72f15cd84d40902e36ad14763e409214a28d6dd84d407c020000001100000061360186e5753e40839e72f15cd84d4061360186e5753e40e12aaad95ed84d40fcccb458e5753e408d823bab60d84d407fabd09be5753e40f2fff4b061d84d40cc5c8539e6753e405078bfc062d84d409cec551ae7753e40bbcc559863d84d40002258b0e8753e40146e43d664d84d400b687d25eb753e40a827e26366d84d400a34338eec753e40e92add5d67d84d40a4969cc9ed753e40b9e8bf6268d84d402d32f092ee753e40063e50b868d84d409167f228f0753e401edc42fc68d84d40aa9619db10763e409214a28d6dd84d4086e8103812763e40d44be71e6dd84d405b35199f13763e405744a8ad6cd84d40902e36ad14763e40ce609d746cd84d400c1e4bc400763e402b20a3f265d84d40fe | way | 989211862 | 1 | {9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000e8a8fe9cdd753e40716193eb5cd84d40dac3036fed753e40e35c797f72d84d407c0200000013000000aa9212cce2753e40716193eb5cd84d40aa9212cce2753e40a69c2ff65ed84d404529c69ee2753e407b455ca560d84d400ffc5ef9e2753e40452c62d861d84d407a22e3ace3753e40f16f86d162d84d400ec81462e4753e40a98f769263d84d40497e69f6e5753e40023164d064d84d407d433c6de8753e4096ea025e66d84d40539044d4e9753e40d7edfd5767d84d40f3afe595eb753e405309aaa168d84d408755174bec753e40b28174b169d84d408d124fd1ec753e40293c0dbd6ad84d4057e5e72bed753e40d57f31b66bd84d40dac3036fed753e40c8b7d2c66cd84d4057e5e72bed753e4009bbcdc06dd84d40dbf74d06ec753e40740f64986ed84d403bd8ac44ea753e40c7c5072c6fd84d40962f1e94e6753e40de77674870d84d40e8a8fe9cdd753e40e35c797f72d84d40fe | way | 989211863 | 1 | {9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e61000004f7ee60709763e40f99dcb796bd84d4018c110830a763e40e64647286cd84d407c02000000020000004f7ee60709763e40e64647286cd84d4018c110830a763e40f99dcb796bd84d40fe | way | 989211868 | 4 | {9143093801,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e610000018c110830a763e40f3846fab6ad84d4070140fde0d763e40f99dcb796bd84d407c020000000200000070140fde0d763e40f3846fab6ad84d4018c110830a763e40f99dcb796bd84d40fe | way | 989211869 | 4 | {1632503177,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e6100000da45877604763e406939d0436dd84d402c80290307763e40c677184971d84d407c02000000040000004510e7e104763e40c677184971d84d40da45877604763e407fe5f7ec6fd84d40456c0b2a05763e40a465ee6b6ed84d402c80290307763e406939d0436dd84d40fe | way | 989211870 | 4 | {1632503179,9143093803,1632503181,9143093802} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e6100000cd80690712763e40d55a988576d84d404c27c8be1a763e40289b728577d84d407c02000000040000004c27c8be1a763e40289b728577d84d405951836918763e40a5ea686677d84d4096a3b6c315763e406ad2b71677d84d40cd80690712763e40d55a988576d84d40fe | way | 989211871 | 4 | {1652605209,9143069531,1632503237,9143093806} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + \x0001e6100000e91a1cdb21763e40ace9d55b5ed84d408682082758763e40d872785270d84d407c0200000002000000e91a1cdb21763e40d872785270d84d408682082758763e40ace9d55b5ed84d40fe | way | 991343632 | 2 | {1632497615,1518870652} | {"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e6100000df420d9535763e40804754a86ed84d40ee2e06c545763e40678984a570d84d407c0200000005000000ee2e06c545763e40804754a86ed84d40df420d9535763e403895568d6fd84d406d2b07c435763e409d2cb5de6fd84d40b51f84db35763e40793c2d3f70d84d40d39453f135763e40678984a570d84d40fe | way | 991343633 | 1 | {9159456550,9159456549,9159456545,9159456544,9159456543} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000e006c60b33763e404b7c49be6dd84d40e871ce3e45763e4092b245d26ed84d407c0200000005000000e871ce3e45763e40da6443ed6dd84d40d985d50e35763e4092b245d26ed84d40fd474b8a34763e40f15e5a796ed84d40b09696ec33763e40278cc11e6ed84d40e006c60b33763e404b7c49be6dd84d40fe | way | 991343634 | 1 | {9159456552,9159456551,9159456548,9159456547,9159456546} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000c305eaded4753e40ff97c68a75d84d40ce93c6c3d6753e4022aaf06778d84d407c0200000002000000c305eaded4753e4022aaf06778d84d40ce93c6c3d6753e40ff97c68a75d84d40fe | way | 991343661 | 1 | {9159459675,9159459674} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + \x0001e6100000339875b5cb753e40d872785270d84d40e91a1cdb21763e407073cf5f8dd84d407c0200000002000000339875b5cb753e407073cf5f8dd84d40e91a1cdb21763e40d872785270d84d40fe | way | 1042527594 | 11 | {9140727237,1632497615} | {"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"} + \x0001e61000002f1114e40c763e404c12f0106bd84d40915d0e6036763e40d618198975d84d407c0300000001000000250000002f1114e40c763e40f03e7dba70d84d40ac8e1ce90c763e40bb7372d06fd84d40c9bb348f0d763e40d9a6c2e96ed84d400a1b54d10e763e408694fa0d6ed84d409e3017a710763e406939d0436dd84d40e404b7ff12763e4093d222916cd84d403ca06cca15763e40169dd1fb6bd84d40888d68f118763e40469737876bd84d4080d82d5d1c763e409f3e5d386bd84d40379089ef1f763e404c12f0106bd84d4065c0fe9023763e4076919d126bd84d401c785a2327763e4088fc8e3c6bd84d409745178a2a763e40ed93ed8d6bd84d403c365daa2d763e40e71835046cd84d4017540a7030763e40228d0a9c6cd84d408dac46c032763e40217365506dd84d4027c7f88b34763e40684d3d1c6ed84d406d2b07c435763e40501fdcf86ed84d40915d0e6036763e4032ec8bdf6fd84d4014e0055b36763e40fc766dca70d84d40f6b2edb435763e40de431db171d84d40b653ce7234763e403156e58c72d84d40223e0b9d32763e404eb10f5773d84d40db696b4430763e402418bd0974d84d4084ceb5792d763e40a14d0e9f74d84d4038e1b9522a763e40dc93d11275d84d403f96f4e626763e4082ecab6175d84d4089de985423763e40d618198975d84d405bae23b31f763e404159428875d84d40a4f6c7201c763e402fee505e75d84d4029290bba18763e40ca56f20c75d84d405ab9179815763e403b12d49574d84d40a91a18d412763e40955dd5fe73d84d4033c2db8310763e4095777a4a73d84d4099a729b80e763e404e9da27e72d84d4052431b800d763e4067cb03a271d84d402f1114e40c763e40f03e7dba70d84d40fe | way | 150294525 | 6 | | {"name":"Дубовое кольцо"} + \x0001e610000017e5e324de753e405add45f35bd84d4009afb893e3753e407e1efef565d84d407c03000000010000000e00000017e5e324de753e406e63586a62d84d4029081edfde753e40addba0f65bd84d4052f75c01e0753e405add45f35bd84d401150864fdf753e403379b93e62d84d40342669a3df753e408c90701063d84d40d57954fcdf753e403e4f4d9363d84d40879455c7e0753e409105f12664d84d40572426a8e1753e403287eea364d84d4009afb893e3753e4084f5dac765d84d4074513e4ee2753e407e1efef565d84d40bdc1bc6ce0753e404925e1e764d84d4088c89f5edf753e405c4e531564d84d40649698c2de753e40d9e5006663d84d4017e5e324de753e406e63586a62d84d40fe | way | 426269715 | 5 | | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} + \x0001e6100000fdfa7cefca753e400edf1d7464d84d407ae81615cc753e40cc79c6be64d84d407c030000000100000009000000fdfa7cefca753e40de8893a064d84d401b704c05cb753e40afd6e48464d84d4062c0ed64cb753e400edf1d7464d84d404a0856d5cb753e40201cfd7964d84d407ae81615cc753e4067107a9164d84d405c7347ffcb753e402c82ffad64d84d401523a69fcb753e40cc79c6be64d84d402ddb3d2fcb753e40bb3ce7b864d84d40fdfa7cefca753e40de8893a064d84d40fe | way | 989184163 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + \x0001e61000003e6e090acd753e400eb10b5064d84d40ba5ba32fce753e40388cdd9964d84d407c0300000001000000090000003e6e090acd753e40de5a817c64d84d405ce3d81fcd753e401ae9fb5f64d84d4079b4cc7dcd753e400eb10b5064d84d408b7be2efcd753e408b2e145564d84d40ba5ba32fce753e4067e2676d64d84d409de6d319ce753e402c54ed8964d84d40559632bacd753e40388cdd9964d84d406d4eca49cd753e40bb0ed59464d84d403e6e090acd753e40de5a817c64d84d40fe | way | 989184166 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} +(111 rows) + +--Testcase 77: +ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE geometry; +--Testcase 78: +SELECT * FROM "♁ FDW"; + geom | osm_type | osm_id | ver | arr | t +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 0101000020E6100000F747CE7811763E4011E6D1E869D84D40 | node | 1632503254 | 6 | | {"drain":"no"} + 0101000020E610000003756FEAA8753E4064B0E2546BD84D40 | node | 1621246531 | 4 | | {"drain":"disperse"} + 0101000020E6100000621C12ADCB753E408D3A843B61D84D40 | node | 1621246620 | 24 | | {"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"} + 0101000020E6100000223E0B9D32763E404EB10F5773D84D40 | node | 1632220259 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000915D0E6036763E4032EC8BDF6FD84D40 | node | 1632220283 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000F6B2EDB435763E40DE431DB171D84D40 | node | 1632220292 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000065C0FE9023763E4076919D126BD84D40 | node | 1632220315 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000009745178A2A763E40ED93ED8D6BD84D40 | node | 1632220319 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E6100000C9BB348F0D763E40D9A6C2E96ED84D40 | node | 1632220350 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000009E3017A710763E406939D0436DD84D40 | node | 1632220355 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000003CA06CCA15763E40169DD1FB6BD84D40 | node | 1632220358 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000002F1114E40C763E40F03E7DBA70D84D40 | node | 1632220359 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E61000005BAE23B31F763E404159428875D84D40 | node | 1632220364 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000099A729B80E763E404E9DA27E72D84D40 | node | 1632220366 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000017540A7030763E40228D0A9C6CD84D40 | node | 1632220378 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000084CEB5792D763E40A14D0E9F74D84D40 | node | 1632220590 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0101000020E610000029290BBA18763E40CA56F20C75D84D40 | node | 1632220686 | 4 | | {"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"} + 0102000020E6100000030000001ECB715DE7753E40840948A066D84D406372B4F4B2753E40D50FA0956AD84D4003756FEAA8753E4064B0E2546BD84D40 | way | 149099000 | 6 | {1621246509,9140565043,1621246531} | {"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"} + 0102000020E610000002000000189A46EE44763E40A3795B446FD84D4076960FF747763E40263ED23B70D84D40 | way | 989211867 | 2 | {1652587955,1652587952} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + 0101000020E6100000BDE2A9471A763E40DB0E57186CD84D40 | node | 1632497609 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"} + 0101000020E610000025F14D2E21763E401C469CA96BD84D40 | node | 1632497610 | 30 | | {"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"} + 0101000020E6100000EA79371614763E40B0FF3A376DD84D40 | node | 1632497611 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"} + 0101000020E61000002152787533763E400E10711871D84D40 | node | 1632497612 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"} + 0101000020E6100000A9F8BF232A763E401CD0D2156CD84D40 | node | 1632497613 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"} + 0101000020E6100000B1A206D330763E40AA5670896DD84D40 | node | 1632497614 | 29 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"} + 0101000020E61000003A0D07F824763E408F9A650575D84D40 | node | 4912277783 | 4 | | {"board_type":"history","information":"board","name":"Меркурий","tourism":"information"} + 0102000020E6100000040000003E038F1436763E40054C851D6BD84D40719417F439763E406FA01BF56BD84D4034B275BA3D763E40EC5FA3F66CD84D40D39DCCE440763E40E09744076ED84D40 | way | 152442438 | 8 | {1652605205,1652605201,1652605200,1652587958} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + 0101000020E6100000E91A1CDB21763E40D872785270D84D40 | node | 1632497615 | 34 | | {"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"} + 0101000020E6100000D243238E2B763E4083D83E8974D84D40 | node | 1632497616 | 26 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"} + 0101000020E61000005F341AAF2F763E40F409EAA573D84D40 | node | 1632497617 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"} + 0101000020E61000004232D3AC22763E402F922C1675D84D40 | node | 1632497618 | 30 | | {"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"} + 0101000020E6100000AC634B4519763E40B28AEDA474D84D40 | node | 1632497619 | 30 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"} + 0101000020E6100000D32934B511763E40AD2F12DA72D84D40 | node | 1632497620 | 31 | | {"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"} + 0101000020E6100000CEA046C60F763E40D95E0B7A6FD84D40 | node | 1632497621 | 29 | | {"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"} + 0101000020E6100000003961C268763E40DF217B736ED84D40 | node | 1652587953 | 5 | | {"drain":"no"} + 0101000020E6100000D39DCCE440763E40E09744076ED84D40 | node | 1652587958 | 5 | | {"drain":"no"} + 0101000020E6100000DAB91FA633763E40384D9F1D70D84D40 | node | 3177639362 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} + 0101000020E610000039DB375211763E403DD68C0C72D84D40 | node | 3188928044 | 4 | | {"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"} + 0101000020E61000003B246BC317763E405451611168D84D40 | node | 3218618266 | 4 | | {"amenity":"bench","backrest":"yes","material":"wood"} + 0101000020E610000049E70D411F763E403ABB6BBF6BD84D40 | node | 4912277772 | 4 | | {"board_type":"history","information":"board","name":"Флора","tourism":"information"} + 0101000020E61000001587D80528763E4034E48EED6BD84D40 | node | 4912277773 | 4 | | {"board_type":"history","information":"board","name":"Урания","tourism":"information"} + 0101000020E6100000ACAB02B518763E40F8B138526CD84D40 | node | 4912277774 | 4 | | {"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"} + 0101000020E6100000B23275B22F763E40153B75406DD84D40 | node | 4912277775 | 4 | | {"board_type":"history","information":"board","name":"Клио","tourism":"information"} + 0101000020E61000007335689E12763E40098DBB9C6DD84D40 | node | 4912277776 | 4 | | {"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"} + 0101000020E6100000C23A44920F763E40AF97A60870D84D40 | node | 4912277777 | 4 | | {"board_type":"history","information":"board","name":"Талия","tourism":"information"} + 0101000020E610000074ACF7C033763E404914B58F70D84D40 | node | 4912277778 | 4 | | {"board_type":"history","information":"board","name":"Калиопа","tourism":"information"} + 0101000020E6100000CDF0FA2713763E40D105F52D73D84D40 | node | 4912277779 | 4 | | {"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"} + 0101000020E6100000B7A7F5C830763E40E342D43373D84D40 | node | 4912277780 | 4 | | {"board_type":"history","information":"board","name":"Полигимния","tourism":"information"} + 0101000020E610000096253ACB2C763E402474E15174D84D40 | node | 4912277781 | 4 | | {"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"} + 0101000020E610000045DA21591B763E4065BF93BB74D84D40 | node | 4912277782 | 4 | | {"board_type":"history","information":"board","name":"Эрато","tourism":"information"} + 0101000020E610000078E0AD3DFD753E40454EBA884AD84D40 | node | 5251698420 | 25 | | {"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"} + 0101000020E610000042AF3F89CF753E407F805AB164D84D40 | node | 6758903438 | 6 | | {"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"} + 0101000020E6100000E1FFD8356B763E40A4C74A276DD84D40 | node | 8331430683 | 3 | | {"inlet":"grate","manhole":"drain","man_made":"manhole"} + 0101000020E6100000CA71022E23763E40F086342A70D84D40 | node | 8530936200 | 1 | | {"board_type":"history","information":"board","name":"Аполлон","tourism":"information"} + 0101000020E61000006372B4F4B2753E40D50FA0956AD84D40 | node | 9140565043 | 1 | | {"ford":"yes"} + 0101000020E6100000A91F8AB8EF753E40786FFBD467D84D40 | node | 9140576937 | 3 | | {"drain":"no"} + 0101000020E610000003D0285DFA753E40773BB13D69D84D40 | node | 9140576938 | 4 | | {"drain":"no"} + 0101000020E6100000E50D30F31D763E40BD885BAA77D84D40 | node | 9143069530 | 5 | | {"drain":"no","source:direction":"survey"} + 0101000020E61000009DA62AC82A763E4045F69C4F78D84D40 | node | 9143069534 | 1 | | {"amenity":"bench","backrest":"yes","material":"wood"} + 0101000020E6100000C712D6C6D8753E4043345FCA65D84D40 | node | 9143093777 | 1 | | {"manhole":"telecom","man_made":"manhole"} + 0101000020E6100000D4C3865DCA753E40F57C72B966D84D40 | node | 9143093778 | 1 | | {"manhole":"telecom","man_made":"manhole"} + 0101000020E61000002C80290307763E406939D0436DD84D40 | node | 9143093802 | 4 | | {"drain":"no"} + 0101000020E61000004A2943B005763E40CCBE863B72D84D40 | node | 9143093804 | 3 | | {"drain":"no"} + 0101000020E6100000CD80690712763E40D55A988576D84D40 | node | 9143093806 | 4 | | {"drain":"no"} + 0101000020E6100000529B38B9DF753E40A1F1E95674D84D40 | node | 9656736571 | 2 | | {"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"} + 0102000020E6100000040000004CD0155BF7753E4060048D9944D84D4078E0AD3DFD753E40454EBA884AD84D40B8C3CB7800763E40AF8273A14DD84D40E91A1CDB21763E40D872785270D84D40 | way | 30995960 | 42 | {9140727117,5251698420,1518870630,1632497615} | {"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} + 0102000020E610000007000000B02770A1E1753E40716193EB5CD84D40691F86B1E0753E4093E34EE960D84D403AF70D02E1753E403908DFA062D84D40B08394E9E1753E40387870C163D84D40F1868FE3E2753E404A9BAA7B64D84D401A42846EE5753E40BA50549165D84D401ECB715DE7753E40840948A066D84D40 | way | 149099004 | 8 | {1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000140000008DCF0946CA753E4073A48EE964D84D40F3B4577AC8753E40DE8893A064D84D40534DFF48C7753E4067B4554964D84D4035C4C25AC6753E40F1B105CE63D84D4071F618F6C5753E40C175204663D84D40ACE0B721C6753E40FD7964BD62D84D40BE03F2DBC6753E40743A353C62D84D4058665B17C8753E408CF2CCCB61D84D40341477BCC9753E40815EB87361D84D40621C12ADCB753E408D3A843B61D84D400EA2B5A2CD753E4004858B2661D84D400D26B49BCF753E40933F733161D84D409B36887BD1753E40A5AA645B61D84D4094FD4EEED2753E40D48A259B61D84D402E60B829D4753E40E01E3AF361D84D407568A219D5753E40216AEC5C62D84D40F29DF3AED5753E40D328C9DF62D84D40C81E46ADD5753E40C7A8216063D84D40EC3CE070D5753E4044B060D163D84D4099863CDDD4753E404A3F863364D84D40 | way | 149099028 | 5 | {9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949} | {"barrier":"fence","colour":"green","fence_type":"wood","height":"2"} + 0102000020E610000017000000339875B5CB753E407073CF5F8DD84D4097321587D8753E40AC51B41776D84D40919DB7B1D9753E40893952C774D84D40547FCEEEDA753E404E976A0B74D84D40A7A503A3DC753E40B3EC496073D84D406FF02A10E2753E40A8E8A3E771D84D40304AD05FE8753E4055F0805770D84D40B735D88AEC753E40F116A3096FD84D40F1475167EE753E40929ED8F96DD84D4074266DAAEE753E40E027B3E66CD84D40AAF7AF07EE753E4076D954826AD84D405DA21FB2ED753E40B8B475CB69D84D408D6E7319ED753E40FA6184F068D84D40BD827EF0EB753E4066321CCF67D84D40473EAF78EA753E405AB8ACC266D84D40830074F3E8753E4043345FCA65D84D40EFEAB01DE7753E40FCFD62B664D84D40C69F4DB3E5753E408010C99063D84D40AF1B00BBE4753E407468476062D84D4038EB9D1BE4753E40B186302361D84D4050FF59F3E3753E4040EB2B595FD84D40626A4B1DE4753E4000A6B1625DD84D407A7E07F5E3753E40487254C95BD84D40 | way | 149099029 | 36 | {9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684} | {"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"} + 0102000020E61000000200000018C110830A763E40F99DCB796BD84D4003D0285DFA753E40773BB13D69D84D40 | way | 149099034 | 9 | {1632503255,9140576938} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000200000053CDACA580763E40BA707BDD7DD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294524 | 8 | {1239612692,1632497615} | {"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E61000002500000029290BBA18763E40CA56F20C75D84D40A4F6C7201C763E402FEE505E75D84D405BAE23B31F763E404159428875D84D4089DE985423763E40D618198975D84D403F96F4E626763E4082ECAB6175D84D4038E1B9522A763E40DC93D11275D84D4084CEB5792D763E40A14D0E9F74D84D40DB696B4430763E402418BD0974D84D40223E0B9D32763E404EB10F5773D84D40B653CE7234763E403156E58C72D84D40F6B2EDB435763E40DE431DB171D84D4014E0055B36763E40FC766DCA70D84D40915D0E6036763E4032EC8BDF6FD84D406D2B07C435763E40501FDCF86ED84D4027C7F88B34763E40684D3D1C6ED84D408DAC46C032763E40217365506DD84D4017540A7030763E40228D0A9C6CD84D403C365DAA2D763E40E71835046CD84D409745178A2A763E40ED93ED8D6BD84D401C785A2327763E4088FC8E3C6BD84D4065C0FE9023763E4076919D126BD84D40379089EF1F763E404C12F0106BD84D4080D82D5D1C763E409F3E5D386BD84D40888D68F118763E40469737876BD84D403CA06CCA15763E40169DD1FB6BD84D40E404B7FF12763E4093D222916CD84D409E3017A710763E406939D0436DD84D400A1B54D10E763E408694FA0D6ED84D40C9BB348F0D763E40D9A6C2E96ED84D40AC8E1CE90C763E40BB7372D06FD84D402F1114E40C763E40F03E7DBA70D84D4052431B800D763E4067CB03A271D84D4099A729B80E763E404E9DA27E72D84D4033C2DB8310763E4095777A4A73D84D40A91A18D412763E40955DD5FE73D84D405AB9179815763E403B12D49574D84D4029290BBA18763E40CA56F20C75D84D40 | way | 150294525 | 6 | {1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686} | {"name":"Дубовое кольцо"} + 0102000020E610000006000000E91A1CDB21763E40D872785270D84D40BA6A9E23F2753E40D7AEBFDB72D84D406A1492CCEA753E40E947C32973D84D4014854CE8E4753E40E370E65773D84D4040A0D8AFE0753E408368AD6873D84D40A7A503A3DC753E40B3EC496073D84D40 | way | 150294532 | 30 | {1632497615,1632220252,9140727238,9140727242,9140727239,1621246592} | {"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E6100000020000007A7E07F5E3753E40487254C95BD84D40E91A1CDB21763E40D872785270D84D40 | way | 150294541 | 8 | {1239612684,1632497615} | {"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D405CF45F3134763E403ED6427F57D84D40 | way | 150294547 | 9 | {1632497615,1518870645} | {"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000006000000E2AB1DC539763E4007616EF772D84D40F33EE99F3B763E40F53D343D72D84D400442469B3E763E406198028871D84D40C05AB56B42763E405B7FA6B970D84D4076960FF747763E40263ED23B70D84D40003961C268763E40DF217B736ED84D40 | way | 152440395 | 6 | {1652587944,1652587948,1652587950,9143093800,1652587952,1652587953} | {"intermittent":"yes","source:direction":"survey","waterway":"ditch"} + 0102000020E61000000300000053F06F2B18763E400CCD751A69D84D40015AA95615763E400C299A6269D84D40F747CE7811763E4011E6D1E869D84D40 | way | 152442436 | 10 | {1652605207,9143204222,1632503254} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000400000039DB375211763E403DD68C0C72D84D40DAB91FA633763E40384D9F1D70D84D40E1FFD8356B763E40A4C74A276DD84D408B96F2107C763E40FEE4396C6CD84D40 | way | 311975108 | 20 | {3188928044,3177639362,8331430683,7911801321} | {"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"} + 0102000020E610000006000000C3DE1F4A0F763E40769A160676D84D408EBD288B0C763E4094298B6775D84D40D25C024B09763E405326906D74D84D4097A6ADB607763E4089C9C0A673D84D400E0B5AED06763E408F44793073D84D404A2943B005763E40CCBE863B72D84D40 | way | 313051687 | 8 | {1632503180,9143069533,9143093805,9143069532,1632503185,9143093804} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000E00000052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D40 | way | 426269715 | 5 | {4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051} | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} + 0102000020E61000000E000000A7A503A3DC753E40B3EC496073D84D40C19D55B0D7753E4090E854E872D84D40B25EB12BD2753E4054466D2C72D84D400AF1ED02CA753E40731D99FD70D84D40A252DB3CC4753E40B59C95FE6FD84D403A443756BD753E403E86D8AA6ED84D4091D6732DB5753E4069DDABFB6CD84D40529731AAB1753E40FEE4396C6CD84D40181527ADAE753E4016CBE31F6CD84D40671A03A1AB753E4028DAB0016CD84D409D1F9095A9753E401098E2056CD84D40211E8997A7753E40BDC799266CD84D4064D1CF2FA5753E40BD23BE6E6CD84D4083AE3374A2753E40F26492EC6CD84D40 | way | 438780267 | 20 | {1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957} | {"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"} + 0102000020E61000000200000077C5E7A969763E409FAEEE586CD84D40E91A1CDB21763E40D872785270D84D40 | way | 750779153 | 4 | {1632220250,1632497615} | {"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D40C0B56EDE93763E40407331618FD84D40 | way | 750779155 | 5 | {1632497615,1195120146} | {"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408D6E7319ED753E40FA6184F068D84D40 | way | 750779156 | 5 | {1632497615,1621246419} | {"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D402E69D6636C763E407143424AA2D84D40 | way | 750779157 | 4 | {1632497615,1652587960} | {"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"} + 0102000020E6100000030000005F251FBB0B763E409FA97C748FD84D40BC9179E40F763E403DB4345C89D84D40E91A1CDB21763E40D872785270D84D40 | way | 750779158 | 4 | {9159459639,1239612686,1632497615} | {"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E6100000150000009D1F9095A9753E401098E2056CD84D40BFE90203AD753E40580229B16BD84D40649291B3B0753E40463B133F6BD84D40691B7FA2B2753E4058EEBBD86AD84D406372B4F4B2753E40D50FA0956AD84D40D4410356B3753E40053818456AD84D40387705ECB4753E40D6FB32BD69D84D4078B6476FB8753E4083458F2969D84D408751103CBE753E405309AAA168D84D402BC65455C3753E40B387AC2468D84D40FA21DB9EC5753E40C53A55BE67D84D40D06EE305C7753E407284B12A67D84D40F949B54FC7753E40EF1B5F7B66D84D40948444DAC6753E40A23C98B965D84D40FBB1497EC4753E40970AE01C64D84D40B4F116FEC2753E407A81A32E63D84D40028F5EC3C2753E406EBF7CB262D84D40074C9649C3753E40C233A14962D84D4095B88E71C5753E40CE8536A561D84D40641415BBC7753E40F84C9B1661D84D40F89969B1CA753E40468EBE9360D84D40 | way | 988944864 | 2 | {9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340} | {"highway":"path","surface":"ground"} + 0102000020E61000000200000005B4BE92F5753E4030BDFDB968D84D40A91F8AB8EF753E40786FFBD467D84D40 | way | 988944880 | 3 | {9140576936,9140576937} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000090000002DDB3D2FCB753E40BB3CE7B864D84D401523A69FCB753E40CC79C6BE64D84D405C7347FFCB753E402C82FFAD64D84D407AE81615CC753E4067107A9164D84D404A0856D5CB753E40201CFD7964D84D4062C0ED64CB753E400EDF1D7464D84D401B704C05CB753E40AFD6E48464D84D40FDFA7CEFCA753E40DE8893A064D84D402DDB3D2FCB753E40BB3CE7B864D84D40 | way | 989184163 | 1 | {9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + 0102000020E6100000090000006D4ECA49CD753E40BB0ED59464D84D40559632BACD753E40388CDD9964D84D409DE6D319CE753E402C54ED8964D84D40BA5BA32FCE753E4067E2676D64D84D408B7BE2EFCD753E408B2E145564D84D4079B4CC7DCD753E400EB10B5064D84D405CE3D81FCD753E401AE9FB5F64D84D403E6E090ACD753E40DE5A817C64D84D406D4ECA49CD753E40BB0ED59464D84D40 | way | 989184166 | 1 | {9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031} | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + 0102000020E610000003000000DB04CE0825763E407B99CD8877D84D40244D727621763E40BD885BAA77D84D40E50D30F31D763E40BD885BAA77D84D40 | way | 989211851 | 4 | {1652605211,9143069529,9143069530} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E610000002000000547FCEEEDA753E404E976A0B74D84D409F34796FB1753E40ED6E545D76D84D40 | way | 989211857 | 12 | {8650331583,4260007752} | {"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"} + 0102000020E610000006000000E4E3C924D9753E40AB31D75878D84D407EB6C480DB753E40B819130775D84D40B3AFE18EDC753E40DC7F643A74D84D4053CF8250DE753E4036278AEB73D84D4028E84020E1753E40EE320DD473D84D4067F3380CE6753E40AD437FB273D84D40 | way | 989211858 | 1 | {9143069609,9143069608,9143069607,9143069606,9143069605,9143069604} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000005000000F83CDA931B763E409540EF3268D84D40EACA67791E763E4028F4554D6BD84D406D75392520763E4088FC8E3C6BD84D400C95DAE621763E4088FC8E3C6BD84D400C61904F23763E4017B776476BD84D40 | way | 989211859 | 1 | {9143093728,9143093727,9143093726,9143093725,9143093724} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000006000000DC2F9FAC18763E40C5F29D4E68D84D405DA626C11B763E4010E099756BD84D401129BCBA19763E40F3C6EEA76BD84D4071091BF917763E408DE7D8E66BD84D40D7A6B1BD16763E40048E041A6CD84D40DB79D10D03763E405B1A097E65D84D40 | way | 989211860 | 1 | {9143093729,9143093730,9143093731,9143093732,9143093734,9143093733} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E6100000120000004C9A50D20D763E40D8CE9C9A70D84D402F2581BC0D763E40619E3AFB6FD84D406A0F20E80D763E402025766D6FD84D40994B05700E763E40DFABB1DF6ED84D4081936DE00E763E40F15E5A796ED84D40CE44227E0F763E40278CC11E6ED84D40E50929E4EF753E40FA75F1C869D84D407AE3A430EF753E40FA75F1C869D84D40F70489EDEE753E405FDF3DF669D84D40FDC1C073EF753E40DB70B3D36AD84D40A91F8AB8EF753E407016E5886BD84D40E50929E4EF753E40D4939E8E6CD84D404A737511F0753E4081D7C2876DD84D40DF4CF15DEF753E4039F7B2486ED84D40A4969CC9ED753E40C7C5072C6FD84D40D53A1680EB753E40321A9E0370D84D4066BFEE74E7753E4049CCFD1F71D84D405858703FE0753E40D1A9D0E572D84D40 | way | 989211861 | 1 | {9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E61000001100000061360186E5753E40839E72F15CD84D4061360186E5753E40E12AAAD95ED84D40FCCCB458E5753E408D823BAB60D84D407FABD09BE5753E40F2FFF4B061D84D40CC5C8539E6753E405078BFC062D84D409CEC551AE7753E40BBCC559863D84D40002258B0E8753E40146E43D664D84D400B687D25EB753E40A827E26366D84D400A34338EEC753E40E92ADD5D67D84D40A4969CC9ED753E40B9E8BF6268D84D402D32F092EE753E40063E50B868D84D409167F228F0753E401EDC42FC68D84D40AA9619DB10763E409214A28D6DD84D4086E8103812763E40D44BE71E6DD84D405B35199F13763E405744A8AD6CD84D40902E36AD14763E40CE609D746CD84D400C1E4BC400763E402B20A3F265D84D40 | way | 989211862 | 1 | {9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000013000000AA9212CCE2753E40716193EB5CD84D40AA9212CCE2753E40A69C2FF65ED84D404529C69EE2753E407B455CA560D84D400FFC5EF9E2753E40452C62D861D84D407A22E3ACE3753E40F16F86D162D84D400EC81462E4753E40A98F769263D84D40497E69F6E5753E40023164D064D84D407D433C6DE8753E4096EA025E66D84D40539044D4E9753E40D7EDFD5767D84D40F3AFE595EB753E405309AAA168D84D408755174BEC753E40B28174B169D84D408D124FD1EC753E40293C0DBD6AD84D4057E5E72BED753E40D57F31B66BD84D40DAC3036FED753E40C8B7D2C66CD84D4057E5E72BED753E4009BBCDC06DD84D40DBF74D06EC753E40740F64986ED84D403BD8AC44EA753E40C7C5072C6FD84D40962F1E94E6753E40DE77674870D84D40E8A8FE9CDD753E40E35C797F72D84D40 | way | 989211863 | 1 | {9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E6100000020000004F7EE60709763E40E64647286CD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211868 | 4 | {9143093801,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E61000000200000070140FDE0D763E40F3846FAB6AD84D4018C110830A763E40F99DCB796BD84D40 | way | 989211869 | 4 | {1632503177,1632503255} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000040000004510E7E104763E40C677184971D84D40DA45877604763E407FE5F7EC6FD84D40456C0B2A05763E40A465EE6B6ED84D402C80290307763E406939D0436DD84D40 | way | 989211870 | 4 | {1632503179,9143093803,1632503181,9143093802} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E6100000040000004C27C8BE1A763E40289B728577D84D405951836918763E40A5EA686677D84D4096A3B6C315763E406AD2B71677D84D40CD80690712763E40D55A988576D84D40 | way | 989211871 | 4 | {1652605209,9143069531,1632503237,9143093806} | {"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"} + 0102000020E610000002000000E91A1CDB21763E40D872785270D84D408682082758763E40ACE9D55B5ED84D40 | way | 991343632 | 2 | {1632497615,1518870652} | {"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"} + 0102000020E610000005000000EE2E06C545763E40804754A86ED84D40DF420D9535763E403895568D6FD84D406D2B07C435763E409D2CB5DE6FD84D40B51F84DB35763E40793C2D3F70D84D40D39453F135763E40678984A570D84D40 | way | 991343633 | 1 | {9159456550,9159456549,9159456545,9159456544,9159456543} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000005000000E871CE3E45763E40DA6443ED6DD84D40D985D50E35763E4092B245D26ED84D40FD474B8A34763E40F15E5A796ED84D40B09696EC33763E40278CC11E6ED84D40E006C60B33763E404B7C49BE6DD84D40 | way | 991343634 | 1 | {9159456552,9159456551,9159456548,9159456547,9159456546} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000002000000C305EADED4753E4022AAF06778D84D40CE93C6C3D6753E40FF97C68A75D84D40 | way | 991343661 | 1 | {9159459675,9159459674} | {"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"} + 0102000020E610000002000000339875B5CB753E407073CF5F8DD84D40E91A1CDB21763E40D872785270D84D40 | way | 1042527594 | 11 | {9140727237,1632497615} | {"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"} + 0103000020E610000001000000250000002F1114E40C763E40F03E7DBA70D84D40AC8E1CE90C763E40BB7372D06FD84D40C9BB348F0D763E40D9A6C2E96ED84D400A1B54D10E763E408694FA0D6ED84D409E3017A710763E406939D0436DD84D40E404B7FF12763E4093D222916CD84D403CA06CCA15763E40169DD1FB6BD84D40888D68F118763E40469737876BD84D4080D82D5D1C763E409F3E5D386BD84D40379089EF1F763E404C12F0106BD84D4065C0FE9023763E4076919D126BD84D401C785A2327763E4088FC8E3C6BD84D409745178A2A763E40ED93ED8D6BD84D403C365DAA2D763E40E71835046CD84D4017540A7030763E40228D0A9C6CD84D408DAC46C032763E40217365506DD84D4027C7F88B34763E40684D3D1C6ED84D406D2B07C435763E40501FDCF86ED84D40915D0E6036763E4032EC8BDF6FD84D4014E0055B36763E40FC766DCA70D84D40F6B2EDB435763E40DE431DB171D84D40B653CE7234763E403156E58C72D84D40223E0B9D32763E404EB10F5773D84D40DB696B4430763E402418BD0974D84D4084CEB5792D763E40A14D0E9F74D84D4038E1B9522A763E40DC93D11275D84D403F96F4E626763E4082ECAB6175D84D4089DE985423763E40D618198975D84D405BAE23B31F763E404159428875D84D40A4F6C7201C763E402FEE505E75D84D4029290BBA18763E40CA56F20C75D84D405AB9179815763E403B12D49574D84D40A91A18D412763E40955DD5FE73D84D4033C2DB8310763E4095777A4A73D84D4099A729B80E763E404E9DA27E72D84D4052431B800D763E4067CB03A271D84D402F1114E40C763E40F03E7DBA70D84D40 | way | 150294525 | 6 | | {"name":"Дубовое кольцо"} + 0103000020E6100000010000000E00000017E5E324DE753E406E63586A62D84D4029081EDFDE753E40ADDBA0F65BD84D4052F75C01E0753E405ADD45F35BD84D401150864FDF753E403379B93E62D84D40342669A3DF753E408C90701063D84D40D57954FCDF753E403E4F4D9363D84D40879455C7E0753E409105F12664D84D40572426A8E1753E403287EEA364D84D4009AFB893E3753E4084F5DAC765D84D4074513E4EE2753E407E1EFEF565D84D40BDC1BC6CE0753E404925E1E764D84D4088C89F5EDF753E405C4E531564D84D40649698C2DE753E40D9E5006663D84D4017E5E324DE753E406E63586A62D84D40 | way | 426269715 | 5 | | {"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"} + 0103000020E61000000100000009000000FDFA7CEFCA753E40DE8893A064D84D401B704C05CB753E40AFD6E48464D84D4062C0ED64CB753E400EDF1D7464D84D404A0856D5CB753E40201CFD7964D84D407AE81615CC753E4067107A9164D84D405C7347FFCB753E402C82FFAD64D84D401523A69FCB753E40CC79C6BE64D84D402DDB3D2FCB753E40BB3CE7B864D84D40FDFA7CEFCA753E40DE8893A064D84D40 | way | 989184163 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} + 0103000020E610000001000000090000003E6E090ACD753E40DE5A817C64D84D405CE3D81FCD753E401AE9FB5F64D84D4079B4CC7DCD753E400EB10B5064D84D408B7BE2EFCD753E408B2E145564D84D40BA5BA32FCE753E4067E2676D64D84D409DE6D319CE753E402C54ED8964D84D40559632BACD753E40388CDD9964D84D406D4ECA49CD753E40BB0ED59464D84D403E6E090ACD753E40DE5A817C64D84D40 | way | 989184166 | 1 | | {"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"} +(111 rows) + +--Testcase 79: +DROP FOREIGN TABLE "♂"; +--Testcase 80: +DROP FOREIGN TABLE "♁ FDW"; +--Testcase 81: +DROP TABLE "♁"; +--Testcase 82: +DROP TABLE "♂"."テスト"; +--Testcase 83: +DROP SCHEMA "♂"; +-- Test operators implemented in PostGIS 3.4.2, other are not tested +-- SELECT testing group +-- geometry -> geometry + bytea const -> geography -> geography + bytea const +-- TC 100 -> TC 150 -> TC200 -> TC250 +-- WHERE testing group +-- geometry -> geometry + bytea const -> geography -> geography + bytea const +-- TC 300 -> TC 350 -> TC400 -> TC450 +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @@ gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm @@ gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm && gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm && gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm << gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm << gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm >> gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm >> gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &< gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &< gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &> gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &> gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<| gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <<| gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 107: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |>> gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm |>> gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &<| gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &<| gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 109: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |&> gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm |&> gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~= gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm ~= gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 111: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm = gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm = gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &&& gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 113: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &&& gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |=| gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm |=| gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 115 +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <#> gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <#> gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<->> gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <<->> gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 117: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @ gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm @ gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~ gm1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm ~ gm1) + SQLite query: SELECT `i`, `gm`, `gm1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm @@ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 151: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 153: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm << '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm >> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 155: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &< '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 157: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 159: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm |>> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm |&> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm ~= '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm &&& '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm |=| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <#> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +---------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gm <<->> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: i, (gm @ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: i, (gm ~ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) + SQLite query: SELECT `i`, `gm` FROM main."types_PostGIS" +(3 rows) + +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <-> gg1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gg <-> gg1) + SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 201: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg && gg1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gg && gg1) + SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <> gg1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gg)::bytea <> (gg1)::bytea) + SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 203: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg = gg1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gg = gg1) + SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 204 +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg != gg1 g FROM "types_PostGIS"; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gg)::bytea <> (gg1)::bytea) + SQLite query: SELECT `i`, `gg`, `gg1` FROM main."types_PostGIS" +(3 rows) + +--Testcase 250: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gg <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) + SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" +(3 rows) + +--Testcase 251: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +-------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, (gg && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) + SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" +(3 rows) + +--Testcase 252: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) + SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" +(3 rows) + +--Testcase 253: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: i, ((gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) + SQLite query: SELECT `i`, `gg` FROM main."types_PostGIS" +(3 rows) + +--Testcase 300: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm @@ "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm && "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 302: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm << "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm >> "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 304: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &< "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &> "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 306: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <<| "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm |>> "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 308: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &<| "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm |&> "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 310: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm ~= "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 311: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm = gm1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" WHERE (((`gm` = `gm1`) IS NOT NULL)) +(3 rows) + +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &&& "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 313: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm |=| "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 314: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> gm1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <#> "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 315: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> gm1 IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <<->> "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 316: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ gm1 IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm @ "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 317: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ gm1 IS NOT NULL; + QUERY PLAN +-------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm ~ "types_PostGIS".gm1) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 350: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm @@ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 351: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 352: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 353: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm << '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 354: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm >> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 355: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: ((("types_PostGIS".gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 356: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &< '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 357: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 358: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 359: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm |>> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 360: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: ((("types_PostGIS".gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 361: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &<| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 362: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm |&> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 363: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm ~= '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 364: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: ((("types_PostGIS".gm)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 365: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm &&& '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 366: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm |=| '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 367: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <#> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 368: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm <<->> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 369: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm @ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 370: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gm, gm1 + Filter: (("types_PostGIS".gm ~ '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geometry) IS NOT NULL) + SQLite query: SELECT `gm`, `gm1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 400: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> gg1 IS NOT NULL; + QUERY PLAN +---------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: (("types_PostGIS".gg <-> "types_PostGIS".gg1) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 401: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && gg1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: (("types_PostGIS".gg && "types_PostGIS".gg1) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 402: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: ((("types_PostGIS".gg)::bytea <> ("types_PostGIS".gg1)::bytea) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: ((("types_PostGIS".gg)::bytea <> ("types_PostGIS".gg1)::bytea) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 404: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg = gg1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" WHERE (((`gg` = `gg1`) IS NOT NULL)) +(3 rows) + +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != gg1 IS NOT NULL; + QUERY PLAN +--------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: ((("types_PostGIS".gg)::bytea <> ("types_PostGIS".gg1)::bytea) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 450: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: (("types_PostGIS".gg <-> '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 451: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------- + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: (("types_PostGIS".gg && '0101000020E6100000BF72CE99FE763E40ED4960730ED84D40'::geography) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 452: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: ((("types_PostGIS".gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 453: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: ((("types_PostGIS".gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 454: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public."types_PostGIS" + Output: gg, gg1 + Filter: ((("types_PostGIS".gg)::bytea <> '\x0101000020e6100000bf72ce99fe763e40ed4960730ed84d40'::bytea) IS NOT NULL) + SQLite query: SELECT `gg`, `gg1` FROM main."types_PostGIS" +(4 rows) + +--Testcase 500: +DROP FOREIGN TABLE "types_PostGIS"; +--Testcase 501: +DROP EXTENSION sqlite_fdw CASCADE; +NOTICE: drop cascades to server sqlite_svr +--Testcase 502: +DROP EXTENSION postgis CASCADE; +NOTICE: drop cascades to 2 other objects +DETAIL: drop cascades to extension postgis_raster +drop cascades to extension postgis_topology diff --git a/expected/17.0/with_gis_support/type.out b/expected/17.0/with_gis_support/type.out new file mode 100644 index 00000000..ab47b70c --- /dev/null +++ b/expected/17.0/with_gis_support/type.out @@ -0,0 +1,535 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/without_gis_support/auto_import.out b/expected/17.0/without_gis_support/auto_import.out new file mode 100644 index 00000000..4c399770 --- /dev/null +++ b/expected/17.0/without_gis_support/auto_import.out @@ -0,0 +1,636 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name | n +-----------------------+----------------------+--------------------+------------------------+---------------------+---- + contrib_regression | public | department | contrib_regression | sqlite_svr | 1 + contrib_regression | public | employee | contrib_regression | sqlite_svr | 2 + contrib_regression | public | empdata | contrib_regression | sqlite_svr | 3 + contrib_regression | public | numbers | contrib_regression | sqlite_svr | 4 + contrib_regression | public | t | contrib_regression | sqlite_svr | 5 + contrib_regression | public | multiprimary | contrib_regression | sqlite_svr | 6 + contrib_regression | public | columntest | contrib_regression | sqlite_svr | 7 + contrib_regression | public | noprimary | contrib_regression | sqlite_svr | 8 + contrib_regression | public | limittest | contrib_regression | sqlite_svr | 9 + contrib_regression | public | grem1_1 | contrib_regression | sqlite_svr | 10 + contrib_regression | public | grem1_2 | contrib_regression | sqlite_svr | 11 + contrib_regression | public | case_exp | contrib_regression | sqlite_svr | 12 + contrib_regression | public | type_STRING | contrib_regression | sqlite_svr | 13 + contrib_regression | public | type_BOOLEANpk | contrib_regression | sqlite_svr | 14 + contrib_regression | public | type_BOOLEAN | contrib_regression | sqlite_svr | 15 + contrib_regression | public | type_BYTE | contrib_regression | sqlite_svr | 16 + contrib_regression | public | type_SINT | contrib_regression | sqlite_svr | 17 + contrib_regression | public | type_BINT | contrib_regression | sqlite_svr | 18 + contrib_regression | public | type_INTEGER | contrib_regression | sqlite_svr | 19 + contrib_regression | public | type_FLOAT | contrib_regression | sqlite_svr | 20 + contrib_regression | public | type_DOUBLE | contrib_regression | sqlite_svr | 21 + contrib_regression | public | type_TIMESTAMP | contrib_regression | sqlite_svr | 22 + contrib_regression | public | type_BLOB | contrib_regression | sqlite_svr | 23 + contrib_regression | public | type_DATE | contrib_regression | sqlite_svr | 24 + contrib_regression | public | type_TIME | contrib_regression | sqlite_svr | 25 + contrib_regression | public | type_BIT | contrib_regression | sqlite_svr | 26 + contrib_regression | public | type_VARBIT | contrib_regression | sqlite_svr | 27 + contrib_regression | public | type_UUIDpk | contrib_regression | sqlite_svr | 28 + contrib_regression | public | type_UUID | contrib_regression | sqlite_svr | 29 + contrib_regression | public | type_MACADDRpk | contrib_regression | sqlite_svr | 30 + contrib_regression | public | type_MACADDR | contrib_regression | sqlite_svr | 31 + contrib_regression | public | type_MACADDR8pk | contrib_regression | sqlite_svr | 32 + contrib_regression | public | type_MACADDR8 | contrib_regression | sqlite_svr | 33 + contrib_regression | public | types_PostGIS | contrib_regression | sqlite_svr | 34 + contrib_regression | public | type_JSON | contrib_regression | sqlite_svr | 35 + contrib_regression | public | type_JSONB | contrib_regression | sqlite_svr | 36 + contrib_regression | public | BitT | contrib_regression | sqlite_svr | 37 + contrib_regression | public | notype | contrib_regression | sqlite_svr | 38 + contrib_regression | public | typetest | contrib_regression | sqlite_svr | 39 + contrib_regression | public | type_TEXT | contrib_regression | sqlite_svr | 40 + contrib_regression | public | alltypetest | contrib_regression | sqlite_svr | 41 + contrib_regression | public | json_osm_test | contrib_regression | sqlite_svr | 42 + contrib_regression | public | shorty | contrib_regression | sqlite_svr | 43 + contrib_regression | public | A a | contrib_regression | sqlite_svr | 44 + contrib_regression | public | fts_table | contrib_regression | sqlite_svr | 45 + contrib_regression | public | fts_table_data | contrib_regression | sqlite_svr | 46 + contrib_regression | public | fts_table_idx | contrib_regression | sqlite_svr | 47 + contrib_regression | public | fts_table_content | contrib_regression | sqlite_svr | 48 + contrib_regression | public | fts_table_docsize | contrib_regression | sqlite_svr | 49 + contrib_regression | public | fts_table_config | contrib_regression | sqlite_svr | 50 + contrib_regression | public | RO_RW_test | contrib_regression | sqlite_svr | 51 + contrib_regression | public | Unicode data | contrib_regression | sqlite_svr | 52 + contrib_regression | public | type_BOOLEAN_oper | contrib_regression | sqlite_svr | 53 + contrib_regression | public | ♁ | contrib_regression | sqlite_svr | 54 + contrib_regression | public | ♂ | contrib_regression | sqlite_svr | 55 +(55 rows) + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; + n | table_name | column_name | tab_no | def | null | data_type | udt_schema | udt_name +----+-------------------+-----------------+--------+-----+------+-----------------------------+------------+----------- + 1 | department | department_id | 1 | | YES | bigint | pg_catalog | int8 + 1 | department | department_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 2 | employee | emp_name | 2 | | YES | text | pg_catalog | text + 2 | employee | emp_dept_id | 3 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_id | 1 | | YES | bigint | pg_catalog | int8 + 3 | empdata | emp_dat | 2 | | YES | numeric | pg_catalog | numeric + 4 | numbers | a | 1 | | YES | bigint | pg_catalog | int8 + 4 | numbers | b | 2 | | YES | character varying | pg_catalog | varchar + 5 | t | a | 1 | | YES | bigint | pg_catalog | int8 + 5 | t | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | b | 2 | | YES | bigint | pg_catalog | int8 + 6 | multiprimary | c | 3 | | YES | bigint | pg_catalog | int8 + 7 | columntest | a a | 1 | | YES | bigint | pg_catalog | int8 + 7 | columntest | b b | 2 | | YES | bigint | pg_catalog | int8 + 7 | columntest | c c | 3 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | a | 1 | | YES | bigint | pg_catalog | int8 + 8 | noprimary | b | 2 | | YES | text | pg_catalog | text + 9 | limittest | id | 1 | | YES | bigint | pg_catalog | int8 + 9 | limittest | x | 2 | | YES | bigint | pg_catalog | int8 + 9 | limittest | y | 3 | | YES | text | pg_catalog | text + 10 | grem1_1 | a | 1 | | YES | bigint | pg_catalog | int8 + 11 | grem1_2 | a | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c1 | 1 | | YES | bigint | pg_catalog | int8 + 12 | case_exp | c3 | 2 | | YES | text | pg_catalog | text + 12 | case_exp | c6 | 3 | | YES | character varying | pg_catalog | varchar + 13 | type_STRING | col | 1 | | YES | text | pg_catalog | text + 14 | type_BOOLEANpk | col | 1 | | YES | boolean | pg_catalog | bool + 15 | type_BOOLEAN | i | 1 | | YES | bigint | pg_catalog | int8 + 15 | type_BOOLEAN | b | 2 | | YES | boolean | pg_catalog | bool + 16 | type_BYTE | col | 1 | | YES | character | pg_catalog | bpchar + 17 | type_SINT | col | 1 | | YES | bigint | pg_catalog | int8 + 18 | type_BINT | col | 1 | | YES | bigint | pg_catalog | int8 + 19 | type_INTEGER | col | 1 | | YES | bigint | pg_catalog | int8 + 20 | type_FLOAT | col | 1 | | YES | double precision | pg_catalog | float8 + 21 | type_DOUBLE | col | 1 | | YES | double precision | pg_catalog | float8 + 22 | type_TIMESTAMP | col | 1 | | YES | timestamp without time zone | pg_catalog | timestamp + 22 | type_TIMESTAMP | b | 2 | | YES | timestamp without time zone | pg_catalog | timestamp + 23 | type_BLOB | col | 1 | | YES | bytea | pg_catalog | bytea + 24 | type_DATE | col | 1 | | YES | date | pg_catalog | date + 25 | type_TIME | col | 1 | | YES | time without time zone | pg_catalog | time + 26 | type_BIT | i | 1 | | YES | bigint | pg_catalog | int8 + 26 | type_BIT | b | 2 | | YES | bit | pg_catalog | bit + 27 | type_VARBIT | i | 1 | | YES | bigint | pg_catalog | int8 + 27 | type_VARBIT | b | 2 | | YES | bit | pg_catalog | bit + 28 | type_UUIDpk | col | 1 | | YES | uuid | pg_catalog | uuid + 29 | type_UUID | i | 1 | | YES | bigint | pg_catalog | int8 + 29 | type_UUID | u | 2 | | YES | uuid | pg_catalog | uuid + 30 | type_MACADDRpk | col | 1 | | YES | macaddr | pg_catalog | macaddr + 31 | type_MACADDR | i | 1 | | YES | bigint | pg_catalog | int8 + 31 | type_MACADDR | m | 2 | | YES | macaddr | pg_catalog | macaddr + 32 | type_MACADDR8pk | col | 1 | | YES | macaddr8 | pg_catalog | macaddr8 + 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 + 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 + 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 + 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric + 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text + 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json + 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar + 35 | type_JSON | oi | 4 | | YES | bigint | pg_catalog | int8 + 35 | type_JSON | q | 5 | | YES | text | pg_catalog | text + 35 | type_JSON | j1 | 6 | | YES | json | pg_catalog | json + 35 | type_JSON | ot1 | 7 | | YES | text | pg_catalog | text + 35 | type_JSON | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | i | 1 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | j | 2 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot | 3 | | YES | character varying | pg_catalog | varchar + 36 | type_JSONB | oi | 4 | | YES | bigint | pg_catalog | int8 + 36 | type_JSONB | q | 5 | | YES | text | pg_catalog | text + 36 | type_JSONB | j1 | 6 | | YES | jsonb | pg_catalog | jsonb + 36 | type_JSONB | ot1 | 7 | | YES | text | pg_catalog | text + 36 | type_JSONB | oi1 | 8 | | YES | bigint | pg_catalog | int8 + 37 | BitT | p | 1 | | YES | bigint | pg_catalog | int8 + 37 | BitT | a | 2 | | YES | bit | pg_catalog | bit + 37 | BitT | b | 3 | | YES | bit varying | pg_catalog | varbit + 38 | notype | a | 1 | | YES | bytea | pg_catalog | bytea + 39 | typetest | i | 1 | | YES | bigint | pg_catalog | int8 + 39 | typetest | v | 2 | | YES | character varying | pg_catalog | varchar + 39 | typetest | c | 3 | | YES | character | pg_catalog | bpchar + 39 | typetest | t | 4 | | YES | text | pg_catalog | text + 39 | typetest | d | 5 | | YES | timestamp without time zone | pg_catalog | timestamp + 39 | typetest | ti | 6 | | YES | timestamp without time zone | pg_catalog | timestamp + 40 | type_TEXT | col | 1 | | YES | text | pg_catalog | text + 41 | alltypetest | c1 | 1 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c2 | 2 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c3 | 3 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c4 | 4 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c5 | 5 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c6 | 6 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c7 | 7 | | YES | bigint | pg_catalog | int8 + 41 | alltypetest | c8 | 8 | | YES | character | pg_catalog | bpchar + 41 | alltypetest | c9 | 9 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c10 | 10 | | YES | character varying | pg_catalog | varchar + 41 | alltypetest | c11 | 11 | | YES | text | pg_catalog | text + 41 | alltypetest | c12 | 12 | | YES | text | pg_catalog | text + 41 | alltypetest | c13 | 13 | | YES | text | pg_catalog | text + 41 | alltypetest | c14 | 14 | | YES | text | pg_catalog | text + 41 | alltypetest | c15 | 15 | | YES | text | pg_catalog | text + 41 | alltypetest | c16 | 16 | | YES | bytea | pg_catalog | bytea + 41 | alltypetest | c17 | 17 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c18 | 18 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c19 | 19 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c20 | 20 | | YES | double precision | pg_catalog | float8 + 41 | alltypetest | c21 | 21 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric + 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date + 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp + 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text + 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar + 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 + 42 | json_osm_test | tags | 4 | | YES | json | pg_catalog | json + 42 | json_osm_test | way_nodes | 5 | | YES | bigint | pg_catalog | int8 + 43 | shorty | id | 1 | | YES | bigint | pg_catalog | int8 + 43 | shorty | c | 2 | | YES | character | pg_catalog | bpchar + 44 | A a | col | 1 | | YES | bigint | pg_catalog | int8 + 45 | fts_table | name | 1 | | YES | bytea | pg_catalog | bytea + 45 | fts_table | description | 2 | | YES | bytea | pg_catalog | bytea + 46 | fts_table_data | id | 1 | | YES | bigint | pg_catalog | int8 + 46 | fts_table_data | block | 2 | | YES | bytea | pg_catalog | bytea + 47 | fts_table_idx | segid | 1 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | term | 2 | | NO | bytea | pg_catalog | bytea + 47 | fts_table_idx | pgno | 3 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | id | 1 | | YES | bigint | pg_catalog | int8 + 48 | fts_table_content | c0 | 2 | | YES | bytea | pg_catalog | bytea + 48 | fts_table_content | c1 | 3 | | YES | bytea | pg_catalog | bytea + 49 | fts_table_docsize | id | 1 | | YES | bigint | pg_catalog | int8 + 49 | fts_table_docsize | sz | 2 | | YES | bytea | pg_catalog | bytea + 50 | fts_table_config | k | 1 | | NO | bytea | pg_catalog | bytea + 50 | fts_table_config | v | 2 | | YES | bytea | pg_catalog | bytea + 51 | RO_RW_test | i | 1 | | NO | bigint | pg_catalog | int8 + 51 | RO_RW_test | a | 2 | | YES | text | pg_catalog | text + 51 | RO_RW_test | b | 3 | | YES | double precision | pg_catalog | float8 + 51 | RO_RW_test | c | 4 | | YES | bigint | pg_catalog | int8 + 52 | Unicode data | i | 1 | | YES | text | pg_catalog | text + 52 | Unicode data | t | 2 | | YES | text | pg_catalog | text + 53 | type_BOOLEAN_oper | i | 1 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i1 | 2 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea + 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar + 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 + 54 | ♁ | arr | 5 | | YES | text | pg_catalog | text + 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb + 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 + 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar + 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date + 55 | ♂ | class | 6 | | YES | text | pg_catalog | text + 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar +(159 rows) + +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; + n | table_name | column_name | tab_no | c_max_len | c_oct_len | num_pr | num_rdx | num_sc | dtp +----+-------------------+-----------------+--------+-----------+------------+--------+---------+--------+----- + 1 | department | department_id | 1 | | | 64 | 2 | 0 | + 1 | department | department_name | 2 | | 1073741824 | | | | + 2 | employee | emp_id | 1 | | | 64 | 2 | 0 | + 2 | employee | emp_name | 2 | | 1073741824 | | | | + 2 | employee | emp_dept_id | 3 | | | 64 | 2 | 0 | + 3 | empdata | emp_id | 1 | | | 64 | 2 | 0 | + 3 | empdata | emp_dat | 2 | | | | 10 | | + 4 | numbers | a | 1 | | | 64 | 2 | 0 | + 4 | numbers | b | 2 | 255 | 1020 | | | | + 5 | t | a | 1 | | | 64 | 2 | 0 | + 5 | t | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | a | 1 | | | 64 | 2 | 0 | + 6 | multiprimary | b | 2 | | | 64 | 2 | 0 | + 6 | multiprimary | c | 3 | | | 64 | 2 | 0 | + 7 | columntest | a a | 1 | | | 64 | 2 | 0 | + 7 | columntest | b b | 2 | | | 64 | 2 | 0 | + 7 | columntest | c c | 3 | | | 64 | 2 | 0 | + 8 | noprimary | a | 1 | | | 64 | 2 | 0 | + 8 | noprimary | b | 2 | | 1073741824 | | | | + 9 | limittest | id | 1 | | | 64 | 2 | 0 | + 9 | limittest | x | 2 | | | 64 | 2 | 0 | + 9 | limittest | y | 3 | | 1073741824 | | | | + 10 | grem1_1 | a | 1 | | | 64 | 2 | 0 | + 11 | grem1_2 | a | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c1 | 1 | | | 64 | 2 | 0 | + 12 | case_exp | c3 | 2 | | 1073741824 | | | | + 12 | case_exp | c6 | 3 | 10 | 40 | | | | + 13 | type_STRING | col | 1 | | 1073741824 | | | | + 14 | type_BOOLEANpk | col | 1 | | | | | | + 15 | type_BOOLEAN | i | 1 | | | 64 | 2 | 0 | + 15 | type_BOOLEAN | b | 2 | | | | | | + 16 | type_BYTE | col | 1 | 1 | 4 | | | | + 17 | type_SINT | col | 1 | | | 64 | 2 | 0 | + 18 | type_BINT | col | 1 | | | 64 | 2 | 0 | + 19 | type_INTEGER | col | 1 | | | 64 | 2 | 0 | + 20 | type_FLOAT | col | 1 | | | 53 | 2 | | + 21 | type_DOUBLE | col | 1 | | | 53 | 2 | | + 22 | type_TIMESTAMP | col | 1 | | | | | | 6 + 22 | type_TIMESTAMP | b | 2 | | | | | | 6 + 23 | type_BLOB | col | 1 | | | | | | + 24 | type_DATE | col | 1 | | | | | | 0 + 25 | type_TIME | col | 1 | | | | | | 6 + 26 | type_BIT | i | 1 | | | 64 | 2 | 0 | + 26 | type_BIT | b | 2 | 1 | | | | | + 27 | type_VARBIT | i | 1 | | | 64 | 2 | 0 | + 27 | type_VARBIT | b | 2 | 1 | | | | | + 28 | type_UUIDpk | col | 1 | | | | | | + 29 | type_UUID | i | 1 | | | 64 | 2 | 0 | + 29 | type_UUID | u | 2 | | | | | | + 30 | type_MACADDRpk | col | 1 | | | | | | + 31 | type_MACADDR | i | 1 | | | 64 | 2 | 0 | + 31 | type_MACADDR | m | 2 | | | | | | + 32 | type_MACADDR8pk | col | 1 | | | | | | + 33 | type_MACADDR8 | i | 1 | | | 64 | 2 | 0 | + 33 | type_MACADDR8 | m | 2 | | | | | | + 34 | types_PostGIS | i | 1 | | | 64 | 2 | 0 | + 34 | types_PostGIS | gm | 2 | | | | | | + 34 | types_PostGIS | gg | 3 | | | | | | + 34 | types_PostGIS | r | 4 | | | | 10 | | + 34 | types_PostGIS | t | 5 | | 1073741824 | | | | + 34 | types_PostGIS | gm1 | 6 | | | | | | + 34 | types_PostGIS | gg1 | 7 | | | | | | + 35 | type_JSON | i | 1 | | | 64 | 2 | 0 | + 35 | type_JSON | j | 2 | | | | | | + 35 | type_JSON | ot | 3 | 8 | 32 | | | | + 35 | type_JSON | oi | 4 | | | 64 | 2 | 0 | + 35 | type_JSON | q | 5 | | 1073741824 | | | | + 35 | type_JSON | j1 | 6 | | | | | | + 35 | type_JSON | ot1 | 7 | | 1073741824 | | | | + 35 | type_JSON | oi1 | 8 | | | 64 | 2 | 0 | + 36 | type_JSONB | i | 1 | | | 64 | 2 | 0 | + 36 | type_JSONB | j | 2 | | | | | | + 36 | type_JSONB | ot | 3 | 8 | 32 | | | | + 36 | type_JSONB | oi | 4 | | | 64 | 2 | 0 | + 36 | type_JSONB | q | 5 | | 1073741824 | | | | + 36 | type_JSONB | j1 | 6 | | | | | | + 36 | type_JSONB | ot1 | 7 | | 1073741824 | | | | + 36 | type_JSONB | oi1 | 8 | | | 64 | 2 | 0 | + 37 | BitT | p | 1 | | | 64 | 2 | 0 | + 37 | BitT | a | 2 | 3 | | | | | + 37 | BitT | b | 3 | 5 | | | | | + 38 | notype | a | 1 | | | | | | + 39 | typetest | i | 1 | | | 64 | 2 | 0 | + 39 | typetest | v | 2 | 10 | 40 | | | | + 39 | typetest | c | 3 | 10 | 40 | | | | + 39 | typetest | t | 4 | | 1073741824 | | | | + 39 | typetest | d | 5 | | | | | | 6 + 39 | typetest | ti | 6 | | | | | | 6 + 40 | type_TEXT | col | 1 | | 1073741824 | | | | + 41 | alltypetest | c1 | 1 | | | 64 | 2 | 0 | + 41 | alltypetest | c2 | 2 | | | 64 | 2 | 0 | + 41 | alltypetest | c3 | 3 | | | 64 | 2 | 0 | + 41 | alltypetest | c4 | 4 | | | 64 | 2 | 0 | + 41 | alltypetest | c5 | 5 | | | 64 | 2 | 0 | + 41 | alltypetest | c6 | 6 | | | 64 | 2 | 0 | + 41 | alltypetest | c7 | 7 | | | 64 | 2 | 0 | + 41 | alltypetest | c8 | 8 | 10 | 40 | | | | + 41 | alltypetest | c9 | 9 | 255 | 1020 | | | | + 41 | alltypetest | c10 | 10 | 255 | 1020 | | | | + 41 | alltypetest | c11 | 11 | | 1073741824 | | | | + 41 | alltypetest | c12 | 12 | | 1073741824 | | | | + 41 | alltypetest | c13 | 13 | | 1073741824 | | | | + 41 | alltypetest | c14 | 14 | | 1073741824 | | | | + 41 | alltypetest | c15 | 15 | | 1073741824 | | | | + 41 | alltypetest | c16 | 16 | | | | | | + 41 | alltypetest | c17 | 17 | | | 53 | 2 | | + 41 | alltypetest | c18 | 18 | | | 53 | 2 | | + 41 | alltypetest | c19 | 19 | | | 53 | 2 | | + 41 | alltypetest | c20 | 20 | | | 53 | 2 | | + 41 | alltypetest | c21 | 21 | | | | 10 | | + 41 | alltypetest | c22 | 22 | | | | 10 | | + 41 | alltypetest | c23 | 23 | | | | | | 0 + 41 | alltypetest | c24 | 24 | | | | | | 6 + 42 | json_osm_test | wkt | 1 | | 1073741824 | | | | + 42 | json_osm_test | osm_type | 2 | 8 | 32 | | | | + 42 | json_osm_test | osm_id | 3 | | | 64 | 2 | 0 | + 42 | json_osm_test | tags | 4 | | | | | | + 42 | json_osm_test | way_nodes | 5 | | | 64 | 2 | 0 | + 43 | shorty | id | 1 | | | 64 | 2 | 0 | + 43 | shorty | c | 2 | 10 | 40 | | | | + 44 | A a | col | 1 | | | 64 | 2 | 0 | + 45 | fts_table | name | 1 | | | | | | + 45 | fts_table | description | 2 | | | | | | + 46 | fts_table_data | id | 1 | | | 64 | 2 | 0 | + 46 | fts_table_data | block | 2 | | | | | | + 47 | fts_table_idx | segid | 1 | | | | | | + 47 | fts_table_idx | term | 2 | | | | | | + 47 | fts_table_idx | pgno | 3 | | | | | | + 48 | fts_table_content | id | 1 | | | 64 | 2 | 0 | + 48 | fts_table_content | c0 | 2 | | | | | | + 48 | fts_table_content | c1 | 3 | | | | | | + 49 | fts_table_docsize | id | 1 | | | 64 | 2 | 0 | + 49 | fts_table_docsize | sz | 2 | | | | | | + 50 | fts_table_config | k | 1 | | | | | | + 50 | fts_table_config | v | 2 | | | | | | + 51 | RO_RW_test | i | 1 | | | 64 | 2 | 0 | + 51 | RO_RW_test | a | 2 | | 1073741824 | | | | + 51 | RO_RW_test | b | 3 | | | 53 | 2 | | + 51 | RO_RW_test | c | 4 | | | 64 | 2 | 0 | + 52 | Unicode data | i | 1 | | 1073741824 | | | | + 52 | Unicode data | t | 2 | | 1073741824 | | | | + 53 | type_BOOLEAN_oper | i | 1 | | | | | | + 53 | type_BOOLEAN_oper | i1 | 2 | | | | | | + 53 | type_BOOLEAN_oper | b1 | 3 | | | | | | + 53 | type_BOOLEAN_oper | i2 | 4 | | | | | | + 53 | type_BOOLEAN_oper | b2 | 5 | | | | | | + 54 | ♁ | geom | 1 | | | | | | + 54 | ♁ | osm_type | 2 | 16 | 64 | | | | + 54 | ♁ | osm_id | 3 | | | 64 | 2 | 0 | + 54 | ♁ | ver | 4 | | | 64 | 2 | 0 | + 54 | ♁ | arr | 5 | | 1073741824 | | | | + 54 | ♁ | t | 6 | | | | | | + 55 | ♂ | id | 1 | | | 64 | 2 | 0 | + 55 | ♂ | UAI | 2 | 254 | 1016 | | | | + 55 | ♂ | ⌖ | 3 | | | | | | + 55 | ♂ | geom | 4 | | | | | | + 55 | ♂ | t₀ | 5 | | | | | | 0 + 55 | ♂ | class | 6 | | 1073741824 | | | | + 55 | ♂ | URL | 7 | 80 | 320 | | | | +(159 rows) + +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + n | table_name | column_name | tab_no | it | ip | max_crd | dtdid | sref | ididt | isgen +----+-------------------+-----------------+--------+----+----+---------+-------+------+-------+------- + 1 | department | department_id | 1 | | | | 1 | NO | NO | NEVER + 1 | department | department_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_id | 1 | | | | 1 | NO | NO | NEVER + 2 | employee | emp_name | 2 | | | | 2 | NO | NO | NEVER + 2 | employee | emp_dept_id | 3 | | | | 3 | NO | NO | NEVER + 3 | empdata | emp_id | 1 | | | | 1 | NO | NO | NEVER + 3 | empdata | emp_dat | 2 | | | | 2 | NO | NO | NEVER + 4 | numbers | a | 1 | | | | 1 | NO | NO | NEVER + 4 | numbers | b | 2 | | | | 2 | NO | NO | NEVER + 5 | t | a | 1 | | | | 1 | NO | NO | NEVER + 5 | t | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | a | 1 | | | | 1 | NO | NO | NEVER + 6 | multiprimary | b | 2 | | | | 2 | NO | NO | NEVER + 6 | multiprimary | c | 3 | | | | 3 | NO | NO | NEVER + 7 | columntest | a a | 1 | | | | 1 | NO | NO | NEVER + 7 | columntest | b b | 2 | | | | 2 | NO | NO | NEVER + 7 | columntest | c c | 3 | | | | 3 | NO | NO | NEVER + 8 | noprimary | a | 1 | | | | 1 | NO | NO | NEVER + 8 | noprimary | b | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | id | 1 | | | | 1 | NO | NO | NEVER + 9 | limittest | x | 2 | | | | 2 | NO | NO | NEVER + 9 | limittest | y | 3 | | | | 3 | NO | NO | NEVER + 10 | grem1_1 | a | 1 | | | | 1 | NO | NO | NEVER + 11 | grem1_2 | a | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c1 | 1 | | | | 1 | NO | NO | NEVER + 12 | case_exp | c3 | 2 | | | | 2 | NO | NO | NEVER + 12 | case_exp | c6 | 3 | | | | 3 | NO | NO | NEVER + 13 | type_STRING | col | 1 | | | | 1 | NO | NO | NEVER + 14 | type_BOOLEANpk | col | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | i | 1 | | | | 1 | NO | NO | NEVER + 15 | type_BOOLEAN | b | 2 | | | | 2 | NO | NO | NEVER + 16 | type_BYTE | col | 1 | | | | 1 | NO | NO | NEVER + 17 | type_SINT | col | 1 | | | | 1 | NO | NO | NEVER + 18 | type_BINT | col | 1 | | | | 1 | NO | NO | NEVER + 19 | type_INTEGER | col | 1 | | | | 1 | NO | NO | NEVER + 20 | type_FLOAT | col | 1 | | | | 1 | NO | NO | NEVER + 21 | type_DOUBLE | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | col | 1 | | | | 1 | NO | NO | NEVER + 22 | type_TIMESTAMP | b | 2 | | | | 2 | NO | NO | NEVER + 23 | type_BLOB | col | 1 | | | | 1 | NO | NO | NEVER + 24 | type_DATE | col | 1 | | | | 1 | NO | NO | NEVER + 25 | type_TIME | col | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | i | 1 | | | | 1 | NO | NO | NEVER + 26 | type_BIT | b | 2 | | | | 2 | NO | NO | NEVER + 27 | type_VARBIT | i | 1 | | | | 1 | NO | NO | NEVER + 27 | type_VARBIT | b | 2 | | | | 2 | NO | NO | NEVER + 28 | type_UUIDpk | col | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | i | 1 | | | | 1 | NO | NO | NEVER + 29 | type_UUID | u | 2 | | | | 2 | NO | NO | NEVER + 30 | type_MACADDRpk | col | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | i | 1 | | | | 1 | NO | NO | NEVER + 31 | type_MACADDR | m | 2 | | | | 2 | NO | NO | NEVER + 32 | type_MACADDR8pk | col | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | i | 1 | | | | 1 | NO | NO | NEVER + 33 | type_MACADDR8 | m | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | i | 1 | | | | 1 | NO | NO | NEVER + 34 | types_PostGIS | gm | 2 | | | | 2 | NO | NO | NEVER + 34 | types_PostGIS | gg | 3 | | | | 3 | NO | NO | NEVER + 34 | types_PostGIS | r | 4 | | | | 4 | NO | NO | NEVER + 34 | types_PostGIS | t | 5 | | | | 5 | NO | NO | NEVER + 34 | types_PostGIS | gm1 | 6 | | | | 6 | NO | NO | NEVER + 34 | types_PostGIS | gg1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | i | 1 | | | | 1 | NO | NO | NEVER + 35 | type_JSON | j | 2 | | | | 2 | NO | NO | NEVER + 35 | type_JSON | ot | 3 | | | | 3 | NO | NO | NEVER + 35 | type_JSON | oi | 4 | | | | 4 | NO | NO | NEVER + 35 | type_JSON | q | 5 | | | | 5 | NO | NO | NEVER + 35 | type_JSON | j1 | 6 | | | | 6 | NO | NO | NEVER + 35 | type_JSON | ot1 | 7 | | | | 7 | NO | NO | NEVER + 35 | type_JSON | oi1 | 8 | | | | 8 | NO | NO | NEVER + 36 | type_JSONB | i | 1 | | | | 1 | NO | NO | NEVER + 36 | type_JSONB | j | 2 | | | | 2 | NO | NO | NEVER + 36 | type_JSONB | ot | 3 | | | | 3 | NO | NO | NEVER + 36 | type_JSONB | oi | 4 | | | | 4 | NO | NO | NEVER + 36 | type_JSONB | q | 5 | | | | 5 | NO | NO | NEVER + 36 | type_JSONB | j1 | 6 | | | | 6 | NO | NO | NEVER + 36 | type_JSONB | ot1 | 7 | | | | 7 | NO | NO | NEVER + 36 | type_JSONB | oi1 | 8 | | | | 8 | NO | NO | NEVER + 37 | BitT | p | 1 | | | | 1 | NO | NO | NEVER + 37 | BitT | a | 2 | | | | 2 | NO | NO | NEVER + 37 | BitT | b | 3 | | | | 3 | NO | NO | NEVER + 38 | notype | a | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | i | 1 | | | | 1 | NO | NO | NEVER + 39 | typetest | v | 2 | | | | 2 | NO | NO | NEVER + 39 | typetest | c | 3 | | | | 3 | NO | NO | NEVER + 39 | typetest | t | 4 | | | | 4 | NO | NO | NEVER + 39 | typetest | d | 5 | | | | 5 | NO | NO | NEVER + 39 | typetest | ti | 6 | | | | 6 | NO | NO | NEVER + 40 | type_TEXT | col | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c1 | 1 | | | | 1 | NO | NO | NEVER + 41 | alltypetest | c2 | 2 | | | | 2 | NO | NO | NEVER + 41 | alltypetest | c3 | 3 | | | | 3 | NO | NO | NEVER + 41 | alltypetest | c4 | 4 | | | | 4 | NO | NO | NEVER + 41 | alltypetest | c5 | 5 | | | | 5 | NO | NO | NEVER + 41 | alltypetest | c6 | 6 | | | | 6 | NO | NO | NEVER + 41 | alltypetest | c7 | 7 | | | | 7 | NO | NO | NEVER + 41 | alltypetest | c8 | 8 | | | | 8 | NO | NO | NEVER + 41 | alltypetest | c9 | 9 | | | | 9 | NO | NO | NEVER + 41 | alltypetest | c10 | 10 | | | | 10 | NO | NO | NEVER + 41 | alltypetest | c11 | 11 | | | | 11 | NO | NO | NEVER + 41 | alltypetest | c12 | 12 | | | | 12 | NO | NO | NEVER + 41 | alltypetest | c13 | 13 | | | | 13 | NO | NO | NEVER + 41 | alltypetest | c14 | 14 | | | | 14 | NO | NO | NEVER + 41 | alltypetest | c15 | 15 | | | | 15 | NO | NO | NEVER + 41 | alltypetest | c16 | 16 | | | | 16 | NO | NO | NEVER + 41 | alltypetest | c17 | 17 | | | | 17 | NO | NO | NEVER + 41 | alltypetest | c18 | 18 | | | | 18 | NO | NO | NEVER + 41 | alltypetest | c19 | 19 | | | | 19 | NO | NO | NEVER + 41 | alltypetest | c20 | 20 | | | | 20 | NO | NO | NEVER + 41 | alltypetest | c21 | 21 | | | | 21 | NO | NO | NEVER + 41 | alltypetest | c22 | 22 | | | | 22 | NO | NO | NEVER + 41 | alltypetest | c23 | 23 | | | | 23 | NO | NO | NEVER + 41 | alltypetest | c24 | 24 | | | | 24 | NO | NO | NEVER + 42 | json_osm_test | wkt | 1 | | | | 1 | NO | NO | NEVER + 42 | json_osm_test | osm_type | 2 | | | | 2 | NO | NO | NEVER + 42 | json_osm_test | osm_id | 3 | | | | 3 | NO | NO | NEVER + 42 | json_osm_test | tags | 4 | | | | 4 | NO | NO | NEVER + 42 | json_osm_test | way_nodes | 5 | | | | 5 | NO | NO | NEVER + 43 | shorty | id | 1 | | | | 1 | NO | NO | NEVER + 43 | shorty | c | 2 | | | | 2 | NO | NO | NEVER + 44 | A a | col | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | name | 1 | | | | 1 | NO | NO | NEVER + 45 | fts_table | description | 2 | | | | 2 | NO | NO | NEVER + 46 | fts_table_data | id | 1 | | | | 1 | NO | NO | NEVER + 46 | fts_table_data | block | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | segid | 1 | | | | 1 | NO | NO | NEVER + 47 | fts_table_idx | term | 2 | | | | 2 | NO | NO | NEVER + 47 | fts_table_idx | pgno | 3 | | | | 3 | NO | NO | NEVER + 48 | fts_table_content | id | 1 | | | | 1 | NO | NO | NEVER + 48 | fts_table_content | c0 | 2 | | | | 2 | NO | NO | NEVER + 48 | fts_table_content | c1 | 3 | | | | 3 | NO | NO | NEVER + 49 | fts_table_docsize | id | 1 | | | | 1 | NO | NO | NEVER + 49 | fts_table_docsize | sz | 2 | | | | 2 | NO | NO | NEVER + 50 | fts_table_config | k | 1 | | | | 1 | NO | NO | NEVER + 50 | fts_table_config | v | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | i | 1 | | | | 1 | NO | NO | NEVER + 51 | RO_RW_test | a | 2 | | | | 2 | NO | NO | NEVER + 51 | RO_RW_test | b | 3 | | | | 3 | NO | NO | NEVER + 51 | RO_RW_test | c | 4 | | | | 4 | NO | NO | NEVER + 52 | Unicode data | i | 1 | | | | 1 | NO | NO | NEVER + 52 | Unicode data | t | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i | 1 | | | | 1 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i1 | 2 | | | | 2 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b1 | 3 | | | | 3 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | i2 | 4 | | | | 4 | NO | NO | NEVER + 53 | type_BOOLEAN_oper | b2 | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | geom | 1 | | | | 1 | NO | NO | NEVER + 54 | ♁ | osm_type | 2 | | | | 2 | NO | NO | NEVER + 54 | ♁ | osm_id | 3 | | | | 3 | NO | NO | NEVER + 54 | ♁ | ver | 4 | | | | 4 | NO | NO | NEVER + 54 | ♁ | arr | 5 | | | | 5 | NO | NO | NEVER + 54 | ♁ | t | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | id | 1 | | | | 1 | NO | NO | NEVER + 55 | ♂ | UAI | 2 | | | | 2 | NO | NO | NEVER + 55 | ♂ | ⌖ | 3 | | | | 3 | NO | NO | NEVER + 55 | ♂ | geom | 4 | | | | 4 | NO | NO | NEVER + 55 | ♂ | t₀ | 5 | | | | 5 | NO | NO | NEVER + 55 | ♂ | class | 6 | | | | 6 | NO | NO | NEVER + 55 | ♂ | URL | 7 | | | | 7 | NO | NO | NEVER +(159 rows) + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + table_catalog | table_schema | table_name | column_name | option_name | option_value +--------------------+--------------+-------------------+---------------+-------------+-------------- + contrib_regression | public | department | department_id | key | true + contrib_regression | public | employee | emp_id | key | true + contrib_regression | public | empdata | emp_id | key | true + contrib_regression | public | numbers | a | key | true + contrib_regression | public | t | a | key | true + contrib_regression | public | multiprimary | b | key | true + contrib_regression | public | multiprimary | c | key | true + contrib_regression | public | columntest | a a | key | true + contrib_regression | public | columntest | b b | key | true + contrib_regression | public | limittest | id | key | true + contrib_regression | public | grem1_1 | a | key | true + contrib_regression | public | grem1_2 | a | key | true + contrib_regression | public | case_exp | c1 | key | true + contrib_regression | public | type_STRING | col | key | true + contrib_regression | public | type_BOOLEANpk | col | key | true + contrib_regression | public | type_BOOLEAN | i | key | true + contrib_regression | public | type_BYTE | col | key | true + contrib_regression | public | type_SINT | col | key | true + contrib_regression | public | type_BINT | col | key | true + contrib_regression | public | type_INTEGER | col | key | true + contrib_regression | public | type_FLOAT | col | key | true + contrib_regression | public | type_DOUBLE | col | key | true + contrib_regression | public | type_TIMESTAMP | col | key | true + contrib_regression | public | type_BLOB | col | key | true + contrib_regression | public | type_DATE | col | key | true + contrib_regression | public | type_TIME | col | key | true + contrib_regression | public | type_UUIDpk | col | key | true + contrib_regression | public | type_MACADDRpk | col | key | true + contrib_regression | public | type_MACADDR8pk | col | key | true + contrib_regression | public | BitT | p | key | true + contrib_regression | public | type_TEXT | col | key | true + contrib_regression | public | shorty | id | key | true + contrib_regression | public | A a | col | key | true + contrib_regression | public | fts_table_data | id | key | true + contrib_regression | public | fts_table_idx | segid | key | true + contrib_regression | public | fts_table_idx | term | key | true + contrib_regression | public | fts_table_content | id | key | true + contrib_regression | public | fts_table_docsize | id | key | true + contrib_regression | public | fts_table_config | k | key | true + contrib_regression | public | RO_RW_test | i | key | true + contrib_regression | public | Unicode data | i | key | true +(41 rows) + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/expected/17.0/types/nogis.out b/expected/17.0/without_gis_support/nogis.out similarity index 100% rename from expected/17.0/types/nogis.out rename to expected/17.0/without_gis_support/nogis.out diff --git a/expected/17.0/without_gis_support/type.out b/expected/17.0/without_gis_support/type.out new file mode 100644 index 00000000..ab47b70c --- /dev/null +++ b/expected/17.0/without_gis_support/type.out @@ -0,0 +1,535 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; +--Testcase 16: +SELECT * FROM "type_STRING"; + col +-------- + string +(1 row) + +--Testcase 18: +SELECT * FROM "type_BYTE"; + col +----- + c +(1 row) + +--Testcase 19: +SELECT * FROM "type_SINT"; + col +-------- + 32767 + -32768 +(2 rows) + +--Testcase 20: +SELECT * FROM "type_BINT"; + col +---------------------- + 9223372036854775807 + -9223372036854775808 +(2 rows) + +--Testcase 21: +SELECT * FROM "type_INTEGER"; + col +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 22: +SELECT * FROM "type_FLOAT"; + col +-------- + 3.1415 +(1 row) + +--Testcase 23: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 +(1 row) + +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 25: +SELECT * FROM "type_BLOB"; + col +------------ + \xdeadbeef +(1 row) + +--Testcase 26: +SELECT * FROM typetest; + i | v | c | t | d | ti +---+---+------------+---+-------------------------+------------------------- + 1 | a | b | c | 2017-11-06 12:34:56.789 | 2017-11-06 12:34:56.789 +(1 row) + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + col +------ + TYPE +(1 row) + +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..7.00 rows=7 width=32) +(1 row) + +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + col +------ + TYPE + type +(2 rows) + +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + QUERY PLAN +--------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..58.00 rows=58 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + col +------ + TYPE +(1 row) + +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + QUERY PLAN +------------------------------------------------------------------- + Foreign Scan on "type_STRING" (cost=10.00..1.00 rows=1 width=32) + Filter: (col ~~* 'typ%'::text) +(2 rows) + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + QUERY PLAN +--------------------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > '2017-11-06')) +(3 rows) + +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + col | b +-------------------------+--------------------- + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(2 rows) + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + QUERY PLAN +----------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: (("type_TIMESTAMP".col)::text > ('2017-11-06'::date)::text) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 + 2017-11-06 01:03:00 | 2017-11-07 00:00:00 +(2 rows) + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + QUERY PLAN +-------------------------------------------------------------------------------- + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + Filter: ("type_TIMESTAMP".col > ("type_TIMESTAMP".b - '@ 1 hour'::interval)) + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" +(4 rows) + +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; + QUERY PLAN +------------------------------------------------------------------------------------ + Foreign Scan on public."type_TIMESTAMP" + Output: col, b + SQLite query: SELECT `col`, `b` FROM main."type_TIMESTAMP" WHERE ((`col` > `b`)) +(3 rows) + +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + col | b +-------------------------+--------------------- + 2017-11-06 12:34:56.789 | 2017-11-06 00:00:00 +(1 row) + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + col +------------ + 2021-02-23 + 2021-03-08 + 9999-12-30 +(3 rows) + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + col +--------------- + 01:23:45 + 01:23:45.6789 +(2 rows) + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Foreign Scan on public.alltypetest (cost=10.00..57.00 rows=57 width=1400) + Output: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 + SQLite query: SELECT `c1`, `c2`, `c3`, `c4`, `c5`, `c6`, `c7`, `c8`, `c9`, `c10`, `c11`, `c12`, `c13`, `c14`, `c15`, sqlite_fdw_float(`c17`), sqlite_fdw_float(`c18`), sqlite_fdw_float(`c19`), sqlite_fdw_float(`c21`), sqlite_fdw_float(`c22`), `c23`, `c24` FROM main."alltypetest" +(3 rows) + +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c17 | c18 | c19 | c2 | c21 | c22 | c23 | c24 +--------+-----+-------+--------+---------------+--------------+---------------+------------+----------------------+------------------------+---------------------+------------------+-------------------------------------------+-----------------------------+--------------------------+---------+--------------+-------------+-----+------+-------------+------------+--------------------- + 583647 | 127 | 12767 | 388607 | 2036854775807 | 573709551615 | 2036854775807 | abcdefghij | abcdefghijjhgfjfuafh | Côte dIvoire Fijifoxju | Hôm nay tôi rất vui | I am happy today | 今日はとても幸せです 今日はとても幸せです | The quick brown fox jumps o | ABCDEFGHIJKLMNOPQRSTUVWX | 3.4e+18 | 1.79769e+108 | 1.79769e+88 | 127 | 1234 | 99999.99999 | 9999-12-31 | 9999-12-31 23:59:59 +(1 row) + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; + col +--------------------------------------------- + [1,2,"foo",null] + {"bar":"baz","balance":7.77,"active":false} +(2 rows) + +--Testcase 57 +DELETE FROM type_JSON; +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK + b +--- + t + f +(2 rows) + +--Testcase 65: +DELETE FROM "type_BOOLEAN"; +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK + col +-------------------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + col +--------------------- + 9223372036854775807 +(1 row) + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + col +---------- + 12:05:06 +(1 row) + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + col +------------ + 2012-05-06 +(1 row) + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK + col +-------------------------------- + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 3.14159265 + 1.3e-05 +(2 rows) + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------- + 12:05:06.12 +(1 row) + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + col +------------ + 1999-01-12 +(1 row) + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +ERROR: Failed to execute remote SQL +HINT: SQLite error 'UNIQUE constraint failed: type_DOUBLE.col', SQLite primary result code 19, extended result code 1555 +CONTEXT: SQL query: INSERT INTO main."type_DOUBLE"(`col`) VALUES (?) +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + col +------------------- + 1999.012 + 3.141592653589793 + Infinity + -Infinity +(4 rows) + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/libsqlite.sql b/sql/13.15/libsqlite.sql index 833e1a11..18b41c48 100644 --- a/sql/13.15/libsqlite.sql +++ b/sql/13.15/libsqlite.sql @@ -8,10 +8,5 @@ SELECT length(sqlite_fdw_sqlite_code_source()); --Testcase 4: SELECT sqlite_fdw_sqlite_code_source(); ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; - --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/13.15/types/bitstring.sql b/sql/13.15/types/bitstring.sql index 1e28e9f9..413592d4 100644 --- a/sql/13.15/types/bitstring.sql +++ b/sql/13.15/types/bitstring.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 02: CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); --Testcase 03: diff --git a/sql/13.15/types/bool.sql b/sql/13.15/types/bool.sql index f464c35d..d78d4cbb 100644 --- a/sql/13.15/types/bool.sql +++ b/sql/13.15/types/bool.sql @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 001: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 01: CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; diff --git a/sql/13.15/types/macaddr.sql b/sql/13.15/types/macaddr.sql index 7a1868cf..69c17a34 100644 --- a/sql/13.15/types/macaddr.sql +++ b/sql/13.15/types/macaddr.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); --Testcase 010: diff --git a/sql/13.15/types/macaddr8.sql b/sql/13.15/types/macaddr8.sql index a447dec8..8aea5869 100644 --- a/sql/13.15/types/macaddr8.sql +++ b/sql/13.15/types/macaddr8.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); --Testcase 010: diff --git a/sql/13.15/types/uuid.sql b/sql/13.15/types/uuid.sql index 01f5ff69..149ef8f1 100644 --- a/sql/13.15/types/uuid.sql +++ b/sql/13.15/types/uuid.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); --Testcase 010: diff --git a/sql/13.15/gis_no/auto_import.sql b/sql/13.15/with_gis_support/auto_import.sql similarity index 96% rename from sql/13.15/gis_no/auto_import.sql rename to sql/13.15/with_gis_support/auto_import.sql index eff95cca..22df5ceb 100644 --- a/sql/13.15/gis_no/auto_import.sql +++ b/sql/13.15/with_gis_support/auto_import.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; diff --git a/sql/13.15/types/postgis.sql b/sql/13.15/with_gis_support/postgis.sql similarity index 99% rename from sql/13.15/types/postgis.sql rename to sql/13.15/with_gis_support/postgis.sql index b08cec3b..457d54f0 100644 --- a/sql/13.15/types/postgis.sql +++ b/sql/13.15/with_gis_support/postgis.sql @@ -5,7 +5,7 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/sql/15.7/gis_ok/type.sql b/sql/13.15/with_gis_support/type.sql similarity index 99% rename from sql/15.7/gis_ok/type.sql rename to sql/13.15/with_gis_support/type.sql index 10ac0aca..cdad623e 100644 --- a/sql/15.7/gis_ok/type.sql +++ b/sql/13.15/with_gis_support/type.sql @@ -6,8 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 47: CREATE EXTENSION postgis; diff --git a/sql/13.15/gis_ok/auto_import.sql b/sql/13.15/without_gis_support/auto_import.sql similarity index 96% rename from sql/13.15/gis_ok/auto_import.sql rename to sql/13.15/without_gis_support/auto_import.sql index eff95cca..22df5ceb 100644 --- a/sql/13.15/gis_ok/auto_import.sql +++ b/sql/13.15/without_gis_support/auto_import.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; diff --git a/sql/13.15/types/nogis.sql b/sql/13.15/without_gis_support/nogis.sql similarity index 100% rename from sql/13.15/types/nogis.sql rename to sql/13.15/without_gis_support/nogis.sql diff --git a/sql/13.15/gis_no/type.sql b/sql/13.15/without_gis_support/type.sql similarity index 99% rename from sql/13.15/gis_no/type.sql rename to sql/13.15/without_gis_support/type.sql index 554edaf6..03b56979 100644 --- a/sql/13.15/gis_no/type.sql +++ b/sql/13.15/without_gis_support/type.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: diff --git a/sql/14.12/libsqlite.sql b/sql/14.12/libsqlite.sql index 833e1a11..18b41c48 100644 --- a/sql/14.12/libsqlite.sql +++ b/sql/14.12/libsqlite.sql @@ -8,10 +8,5 @@ SELECT length(sqlite_fdw_sqlite_code_source()); --Testcase 4: SELECT sqlite_fdw_sqlite_code_source(); ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; - --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/14.12/types/bitstring.sql b/sql/14.12/types/bitstring.sql index 1e28e9f9..413592d4 100644 --- a/sql/14.12/types/bitstring.sql +++ b/sql/14.12/types/bitstring.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 02: CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); --Testcase 03: diff --git a/sql/14.12/types/bool.sql b/sql/14.12/types/bool.sql index f464c35d..d78d4cbb 100644 --- a/sql/14.12/types/bool.sql +++ b/sql/14.12/types/bool.sql @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 001: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 01: CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; diff --git a/sql/14.12/types/macaddr.sql b/sql/14.12/types/macaddr.sql index 7a1868cf..69c17a34 100644 --- a/sql/14.12/types/macaddr.sql +++ b/sql/14.12/types/macaddr.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); --Testcase 010: diff --git a/sql/14.12/types/macaddr8.sql b/sql/14.12/types/macaddr8.sql index a447dec8..8aea5869 100644 --- a/sql/14.12/types/macaddr8.sql +++ b/sql/14.12/types/macaddr8.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); --Testcase 010: diff --git a/sql/14.12/types/uuid.sql b/sql/14.12/types/uuid.sql index 01f5ff69..149ef8f1 100644 --- a/sql/14.12/types/uuid.sql +++ b/sql/14.12/types/uuid.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); --Testcase 010: diff --git a/sql/14.12/gis_no/auto_import.sql b/sql/14.12/with_gis_support/auto_import.sql similarity index 96% rename from sql/14.12/gis_no/auto_import.sql rename to sql/14.12/with_gis_support/auto_import.sql index eff95cca..22df5ceb 100644 --- a/sql/14.12/gis_no/auto_import.sql +++ b/sql/14.12/with_gis_support/auto_import.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; diff --git a/sql/14.12/types/postgis.sql b/sql/14.12/with_gis_support/postgis.sql similarity index 99% rename from sql/14.12/types/postgis.sql rename to sql/14.12/with_gis_support/postgis.sql index b08cec3b..457d54f0 100644 --- a/sql/14.12/types/postgis.sql +++ b/sql/14.12/with_gis_support/postgis.sql @@ -5,7 +5,7 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/sql/13.15/gis_ok/type.sql b/sql/14.12/with_gis_support/type.sql similarity index 99% rename from sql/13.15/gis_ok/type.sql rename to sql/14.12/with_gis_support/type.sql index 10ac0aca..cdad623e 100644 --- a/sql/13.15/gis_ok/type.sql +++ b/sql/14.12/with_gis_support/type.sql @@ -6,8 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 47: CREATE EXTENSION postgis; diff --git a/sql/14.12/gis_ok/auto_import.sql b/sql/14.12/without_gis_support/auto_import.sql similarity index 96% rename from sql/14.12/gis_ok/auto_import.sql rename to sql/14.12/without_gis_support/auto_import.sql index eff95cca..22df5ceb 100644 --- a/sql/14.12/gis_ok/auto_import.sql +++ b/sql/14.12/without_gis_support/auto_import.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 04: IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; diff --git a/sql/14.12/types/nogis.sql b/sql/14.12/without_gis_support/nogis.sql similarity index 100% rename from sql/14.12/types/nogis.sql rename to sql/14.12/without_gis_support/nogis.sql diff --git a/sql/15.7/gis_no/type.sql b/sql/14.12/without_gis_support/type.sql similarity index 99% rename from sql/15.7/gis_no/type.sql rename to sql/14.12/without_gis_support/type.sql index 554edaf6..03b56979 100644 --- a/sql/15.7/gis_no/type.sql +++ b/sql/14.12/without_gis_support/type.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: diff --git a/sql/15.7/gis_no/auto_import.sql b/sql/15.7/gis_no/auto_import.sql deleted file mode 100644 index eff95cca..00000000 --- a/sql/15.7/gis_no/auto_import.sql +++ /dev/null @@ -1,52 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; - ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/gis_ok/auto_import.sql b/sql/15.7/gis_ok/auto_import.sql deleted file mode 100644 index eff95cca..00000000 --- a/sql/15.7/gis_ok/auto_import.sql +++ /dev/null @@ -1,52 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; - ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/libsqlite.sql b/sql/15.7/libsqlite.sql index 833e1a11..18b41c48 100644 --- a/sql/15.7/libsqlite.sql +++ b/sql/15.7/libsqlite.sql @@ -8,10 +8,5 @@ SELECT length(sqlite_fdw_sqlite_code_source()); --Testcase 4: SELECT sqlite_fdw_sqlite_code_source(); ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; - --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/types/bitstring.sql b/sql/15.7/types/bitstring.sql index 1e28e9f9..413592d4 100644 --- a/sql/15.7/types/bitstring.sql +++ b/sql/15.7/types/bitstring.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 02: CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); --Testcase 03: diff --git a/sql/15.7/types/bool.sql b/sql/15.7/types/bool.sql index f464c35d..d78d4cbb 100644 --- a/sql/15.7/types/bool.sql +++ b/sql/15.7/types/bool.sql @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 001: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 01: CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; diff --git a/sql/15.7/types/macaddr.sql b/sql/15.7/types/macaddr.sql index 7a1868cf..69c17a34 100644 --- a/sql/15.7/types/macaddr.sql +++ b/sql/15.7/types/macaddr.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); --Testcase 010: diff --git a/sql/15.7/types/macaddr8.sql b/sql/15.7/types/macaddr8.sql index a447dec8..8aea5869 100644 --- a/sql/15.7/types/macaddr8.sql +++ b/sql/15.7/types/macaddr8.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); --Testcase 010: diff --git a/sql/15.7/types/uuid.sql b/sql/15.7/types/uuid.sql index 01f5ff69..149ef8f1 100644 --- a/sql/15.7/types/uuid.sql +++ b/sql/15.7/types/uuid.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); --Testcase 010: diff --git a/sql/15.7/with_gis_support/auto_import.sql b/sql/15.7/with_gis_support/auto_import.sql new file mode 100644 index 00000000..22df5ceb --- /dev/null +++ b/sql/15.7/with_gis_support/auto_import.sql @@ -0,0 +1,49 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/types/postgis.sql b/sql/15.7/with_gis_support/postgis.sql similarity index 99% rename from sql/15.7/types/postgis.sql rename to sql/15.7/with_gis_support/postgis.sql index b08cec3b..457d54f0 100644 --- a/sql/15.7/types/postgis.sql +++ b/sql/15.7/with_gis_support/postgis.sql @@ -5,7 +5,7 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/sql/16.3/gis_ok/type.sql b/sql/15.7/with_gis_support/type.sql similarity index 99% rename from sql/16.3/gis_ok/type.sql rename to sql/15.7/with_gis_support/type.sql index 10ac0aca..cdad623e 100644 --- a/sql/16.3/gis_ok/type.sql +++ b/sql/15.7/with_gis_support/type.sql @@ -6,8 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 47: CREATE EXTENSION postgis; diff --git a/sql/15.7/without_gis_support/auto_import.sql b/sql/15.7/without_gis_support/auto_import.sql new file mode 100644 index 00000000..22df5ceb --- /dev/null +++ b/sql/15.7/without_gis_support/auto_import.sql @@ -0,0 +1,49 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/15.7/types/nogis.sql b/sql/15.7/without_gis_support/nogis.sql similarity index 100% rename from sql/15.7/types/nogis.sql rename to sql/15.7/without_gis_support/nogis.sql diff --git a/sql/14.12/gis_no/type.sql b/sql/15.7/without_gis_support/type.sql similarity index 99% rename from sql/14.12/gis_no/type.sql rename to sql/15.7/without_gis_support/type.sql index 554edaf6..03b56979 100644 --- a/sql/14.12/gis_no/type.sql +++ b/sql/15.7/without_gis_support/type.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: diff --git a/sql/16.3/gis_no/auto_import.sql b/sql/16.3/gis_no/auto_import.sql deleted file mode 100644 index eff95cca..00000000 --- a/sql/16.3/gis_no/auto_import.sql +++ /dev/null @@ -1,52 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; - ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/gis_ok/auto_import.sql b/sql/16.3/gis_ok/auto_import.sql deleted file mode 100644 index eff95cca..00000000 --- a/sql/16.3/gis_ok/auto_import.sql +++ /dev/null @@ -1,52 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; - ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/libsqlite.sql b/sql/16.3/libsqlite.sql index 833e1a11..18b41c48 100644 --- a/sql/16.3/libsqlite.sql +++ b/sql/16.3/libsqlite.sql @@ -8,10 +8,5 @@ SELECT length(sqlite_fdw_sqlite_code_source()); --Testcase 4: SELECT sqlite_fdw_sqlite_code_source(); ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; - --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/types/bitstring.sql b/sql/16.3/types/bitstring.sql index 1e28e9f9..413592d4 100644 --- a/sql/16.3/types/bitstring.sql +++ b/sql/16.3/types/bitstring.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 02: CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); --Testcase 03: diff --git a/sql/16.3/types/bool.sql b/sql/16.3/types/bool.sql index f464c35d..d78d4cbb 100644 --- a/sql/16.3/types/bool.sql +++ b/sql/16.3/types/bool.sql @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 001: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 01: CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; diff --git a/sql/16.3/types/macaddr.sql b/sql/16.3/types/macaddr.sql index 7a1868cf..69c17a34 100644 --- a/sql/16.3/types/macaddr.sql +++ b/sql/16.3/types/macaddr.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); --Testcase 010: diff --git a/sql/16.3/types/macaddr8.sql b/sql/16.3/types/macaddr8.sql index a447dec8..8aea5869 100644 --- a/sql/16.3/types/macaddr8.sql +++ b/sql/16.3/types/macaddr8.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); --Testcase 010: diff --git a/sql/16.3/types/uuid.sql b/sql/16.3/types/uuid.sql index 01f5ff69..149ef8f1 100644 --- a/sql/16.3/types/uuid.sql +++ b/sql/16.3/types/uuid.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); --Testcase 010: diff --git a/sql/16.3/with_gis_support/auto_import.sql b/sql/16.3/with_gis_support/auto_import.sql new file mode 100644 index 00000000..22df5ceb --- /dev/null +++ b/sql/16.3/with_gis_support/auto_import.sql @@ -0,0 +1,49 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/types/postgis.sql b/sql/16.3/with_gis_support/postgis.sql similarity index 99% rename from sql/16.3/types/postgis.sql rename to sql/16.3/with_gis_support/postgis.sql index b08cec3b..457d54f0 100644 --- a/sql/16.3/types/postgis.sql +++ b/sql/16.3/with_gis_support/postgis.sql @@ -5,7 +5,7 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 4: -CREATE EXTENSION postgis; +CREATE EXTENSION IF NOT EXISTS postgis; --Testcase 5: CREATE EXTENSION postgis_raster; --Testcase 6: diff --git a/sql/14.12/gis_ok/type.sql b/sql/16.3/with_gis_support/type.sql similarity index 99% rename from sql/14.12/gis_ok/type.sql rename to sql/16.3/with_gis_support/type.sql index 10ac0aca..cdad623e 100644 --- a/sql/14.12/gis_ok/type.sql +++ b/sql/16.3/with_gis_support/type.sql @@ -6,8 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 47: CREATE EXTENSION postgis; diff --git a/sql/16.3/without_gis_support/auto_import.sql b/sql/16.3/without_gis_support/auto_import.sql new file mode 100644 index 00000000..22df5ceb --- /dev/null +++ b/sql/16.3/without_gis_support/auto_import.sql @@ -0,0 +1,49 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/16.3/types/nogis.sql b/sql/16.3/without_gis_support/nogis.sql similarity index 100% rename from sql/16.3/types/nogis.sql rename to sql/16.3/without_gis_support/nogis.sql diff --git a/sql/16.3/gis_no/type.sql b/sql/16.3/without_gis_support/type.sql similarity index 99% rename from sql/16.3/gis_no/type.sql rename to sql/16.3/without_gis_support/type.sql index 554edaf6..03b56979 100644 --- a/sql/16.3/gis_no/type.sql +++ b/sql/16.3/without_gis_support/type.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: diff --git a/sql/17.0/gis_no/auto_import.sql b/sql/17.0/gis_no/auto_import.sql deleted file mode 100644 index eff95cca..00000000 --- a/sql/17.0/gis_no/auto_import.sql +++ /dev/null @@ -1,52 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; - ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_no/type.sql b/sql/17.0/gis_no/type.sql deleted file mode 100644 index 554edaf6..00000000 --- a/sql/17.0/gis_no/type.sql +++ /dev/null @@ -1,286 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); - ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; - ---Testcase 16: -SELECT * FROM "type_STRING"; ---Testcase 18: -SELECT * FROM "type_BYTE"; ---Testcase 19: -SELECT * FROM "type_SINT"; ---Testcase 20: -SELECT * FROM "type_BINT"; ---Testcase 21: -SELECT * FROM "type_INTEGER"; ---Testcase 22: -SELECT * FROM "type_FLOAT"; ---Testcase 23: -SELECT * FROM "type_DOUBLE"; -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; ---Testcase 25: -SELECT * FROM "type_BLOB"; ---Testcase 26: -SELECT * FROM typetest; - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); - --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; ---Testcase 57 -DELETE FROM type_JSON; - ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK ---Testcase 65: -DELETE FROM "type_BOOLEAN"; - --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; - ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); - --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; - ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_ok/auto_import.sql b/sql/17.0/gis_ok/auto_import.sql deleted file mode 100644 index eff95cca..00000000 --- a/sql/17.0/gis_ok/auto_import.sql +++ /dev/null @@ -1,52 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 01: -CREATE EXTENSION sqlite_fdw; ---Testcase 02: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 03: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - ---Testcase 04: -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 05: -CREATE VIEW ft AS ( -SELECT *, row_number() OVER () n -FROM information_schema.foreign_tables -WHERE foreign_table_catalog = current_database() -AND foreign_table_schema = 'public' -); ---Testcase 06: -SELECT * FROM ft; - ---Testcase 07: -CREATE VIEW fc AS ( -SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen -FROM information_schema.columns c -INNER JOIN ft -ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) -) order by n, tab_no; ---Testcase 08: base metadata -SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; ---Testcase 09: size/length/presision metadata -SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; ---Testcase 10: other metadata -SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; - ---Testcase 11: -SELECT * FROM information_schema.column_options -WHERE (table_catalog, table_schema, table_name) -IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); - ---Testcase 11: -DROP VIEW fc; ---Testcase 12: -DROP VIEW ft; - ---Testcase 20: -SET client_min_messages TO ERROR; ---Testcase 21: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/gis_ok/type.sql b/sql/17.0/gis_ok/type.sql deleted file mode 100644 index 10ac0aca..00000000 --- a/sql/17.0/gis_ok/type.sql +++ /dev/null @@ -1,288 +0,0 @@ ---SET log_min_messages TO DEBUG1; ---SET client_min_messages TO DEBUG1; ---Testcase 44: -CREATE EXTENSION sqlite_fdw; ---Testcase 45: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 46: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; ---Testcase 47: -CREATE EXTENSION postgis; - -IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; - ---Testcase 1: -INSERT INTO "type_STRING"(col) VALUES ('string'); ---Testcase 4: -INSERT INTO "type_BYTE"(col) VALUES ('c'); ---Testcase 5: -INSERT INTO "type_SINT"(col) VALUES (32767); ---Testcase 6: -INSERT INTO "type_SINT"(col) VALUES (-32768); ---Testcase 7: -INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); ---Testcase 8: -INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); ---Testcase 9: -INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); - ---Testcase 10: -INSERT INTO "type_FLOAT"(col) VALUES (3.1415); ---Testcase 11: -INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); ---Testcase 12: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); ---Testcase 13: -INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); ---Testcase 14: -INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); ---Testcase 15: -INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; - ---Testcase 16: -SELECT * FROM "type_STRING"; ---Testcase 18: -SELECT * FROM "type_BYTE"; ---Testcase 19: -SELECT * FROM "type_SINT"; ---Testcase 20: -SELECT * FROM "type_BINT"; ---Testcase 21: -SELECT * FROM "type_INTEGER"; ---Testcase 22: -SELECT * FROM "type_FLOAT"; ---Testcase 23: -SELECT * FROM "type_DOUBLE"; -set datestyle=ISO; ---Testcase 24: -SELECT * FROM "type_TIMESTAMP"; ---Testcase 25: -SELECT * FROM "type_BLOB"; ---Testcase 26: -SELECT * FROM typetest; - ---Testcase 27: -insert into "type_STRING" values('TYPE'); ---Testcase 28: -insert into "type_STRING" values('type'); - --- not pushdown ---Testcase 29: -SELECT *FROM "type_STRING" WHERE col like 'TYP%'; ---Testcase 30: -EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; --- pushdown ---Testcase 31: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; ---Testcase 32: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; - ---Testcase 33: -SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; ---Testcase 34: -EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; - ---Testcase 35: -SELECT * FROM "type_TIMESTAMP"; - ---Testcase 36: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; ---Testcase 37: -SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; - ---Testcase 38: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; ---Testcase 39: -SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; - ---Testcase 40: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; ---Testcase 41: -SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; - ---Testcase 42: -EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; ---Testcase 43: -SELECT * FROM "type_TIMESTAMP" WHERE col > b; - ---Testcase 48: -INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); ---Testcase 49: -INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); ---Testcase 50: -INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); ---Testcase 58: -SELECT * FROM "type_DATE"; - ---Testcase 51: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); ---Testcase 52: -INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); ---Testcase 59: -SELECT * FROM "type_TIME"; - ---Testcase 60: -EXPLAIN VERBOSE -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; ---Testcase 61: -SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; - ---Testcase 53: -CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); ---Testcase 54: -INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); ---Testcase 55: -INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); ---Testcase 56 -SELECT * FROM type_JSON; ---Testcase 57 -DELETE FROM type_JSON; - ---Testcase 60: -DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; ---Testcase 61: -CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; ---Testcase 62: -INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); ---Testcase 63: -ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; ---Testcase 64: -SELECT * FROM "type_BOOLEAN"; -- OK ---Testcase 65: -DELETE FROM "type_BOOLEAN"; - --- define INTEGER as TEXT column ---Testcase 67: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; ---Testcase 68: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as bpchar ---Testcase 69: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); ---Testcase 70: -SELECT * FROM "type_INTEGER"; -- OK --- define INTEGER as varchar ---Testcase 71: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); ---Testcase 72: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as name ---Testcase 73: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; ---Testcase 74: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as json ---Testcase 75: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; ---Testcase 76: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as time ---Testcase 77: -DELETE FROM "type_INTEGER"; ---Testcase 78: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; ---Testcase 79: -INSERT INTO "type_INTEGER" VALUES (120506); ---Testcase 80: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; ---Testcase 81: -SELECT * FROM "type_INTEGER"; -- OK - --- define INTEGER as date ---Testcase 82: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; ---Testcase 83: -SELECT * FROM "type_INTEGER"; -- OK - ---Testcase 84: -ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; - ---Testcase 85: -INSERT INTO "type_DOUBLE" VALUES (1.3e-5); ---Testcase 86: -SELECT * FROM "type_DOUBLE"; - --- define DOUBLE as TEXT column ---Testcase 87: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; ---Testcase 88: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as bpchar ---Testcase 89: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); ---Testcase 90: -SELECT * FROM "type_DOUBLE"; -- OK --- define DOUBLE as varchar ---Testcase 91: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); ---Testcase 92: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as name ---Testcase 93: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; ---Testcase 94: -SELECT * FROM "type_DOUBLE"; -- OK - --- define DOUBLE as json ---Testcase 95: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; ---Testcase 96: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 97: -DELETE FROM "type_DOUBLE"; ---Testcase 98: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 99: -INSERT INTO "type_DOUBLE" VALUES (120506.12); - --- define DOUBLE as time ---Testcase 100: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; ---Testcase 101: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 102: -DELETE FROM "type_DOUBLE"; ---Testcase 103: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; ---Testcase 104: -INSERT INTO "type_DOUBLE" VALUES (1999.012); --- define DOUBLE as date ---Testcase 105: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; ---Testcase 106: -SELECT * FROM "type_DOUBLE"; -- OK - ---Testcase 107: -ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; - ---Testcase 108: -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 109: ERR primary key -INSERT INTO "type_DOUBLE" VALUES (PI()); ---Testcase 110: -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 111: -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 113: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf ---Testcase 114: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('Infinity'); ---Testcase 115: ERR primary key -INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); ---Testcase 116: -SELECT * FROM "type_DOUBLE"; -- OK, +- Inf - ---Testcase 300: -SET client_min_messages TO ERROR; ---Testcase 301: no details -DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/libsqlite.sql b/sql/17.0/libsqlite.sql index 833e1a11..18b41c48 100644 --- a/sql/17.0/libsqlite.sql +++ b/sql/17.0/libsqlite.sql @@ -8,10 +8,5 @@ SELECT length(sqlite_fdw_sqlite_code_source()); --Testcase 4: SELECT sqlite_fdw_sqlite_code_source(); ---Testcase 5: --- CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 6: --- DROP SERVER sqlite_svr; - --Testcase 7: DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/types/bitstring.sql b/sql/17.0/types/bitstring.sql index 1e28e9f9..413592d4 100644 --- a/sql/17.0/types/bitstring.sql +++ b/sql/17.0/types/bitstring.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 02: CREATE FOREIGN TABLE "type_BIT"( "i" int OPTIONS (key 'true'), "b" bit(6)) SERVER sqlite_svr OPTIONS (table 'type_BIT'); --Testcase 03: diff --git a/sql/17.0/types/bool.sql b/sql/17.0/types/bool.sql index f464c35d..d78d4cbb 100644 --- a/sql/17.0/types/bool.sql +++ b/sql/17.0/types/bool.sql @@ -5,8 +5,6 @@ CREATE EXTENSION sqlite_fdw; --Testcase 001: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 002: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; --Testcase 01: CREATE FOREIGN TABLE "type_BOOLEAN" (i int OPTIONS (key 'true'), b bool) SERVER sqlite_svr; diff --git a/sql/17.0/types/macaddr.sql b/sql/17.0/types/macaddr.sql index 7a1868cf..69c17a34 100644 --- a/sql/17.0/types/macaddr.sql +++ b/sql/17.0/types/macaddr.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR"( "i" int OPTIONS (key 'true'), "m" macaddr) SERVER sqlite_svr OPTIONS (table 'type_MACADDR'); --Testcase 010: diff --git a/sql/17.0/types/macaddr8.sql b/sql/17.0/types/macaddr8.sql index a447dec8..8aea5869 100644 --- a/sql/17.0/types/macaddr8.sql +++ b/sql/17.0/types/macaddr8.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_MACADDR8"( "i" int OPTIONS (key 'true'), "m" macaddr8) SERVER sqlite_svr OPTIONS (table 'type_MACADDR8'); --Testcase 010: diff --git a/sql/17.0/types/postgis.sql b/sql/17.0/types/postgis.sql deleted file mode 100644 index b08cec3b..00000000 --- a/sql/17.0/types/postgis.sql +++ /dev/null @@ -1,602 +0,0 @@ ---Testcase 2: -CREATE EXTENSION sqlite_fdw; ---Testcase 3: -CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw -OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - ---Testcase 4: -CREATE EXTENSION postgis; ---Testcase 5: -CREATE EXTENSION postgis_raster; ---Testcase 6: -CREATE EXTENSION postgis_topology; - --- TEST GIS DATA FROM UNION ASTRONOMIQUE INTERNATIONAL (国際天文学連合): MARS, Olympus mons ---Testcase 11: -CREATE SCHEMA "♂"; ---Testcase 12: -CREATE TABLE "♂"."テスト" ( - id int4 NULL, - "UAI" varchar(254) NULL, - "⌖" public.geometry(point, 104904) NULL, - geom public.geometry(geometry, 104904) NULL, - "t₀" date NULL, - "class" text NULL, - "URL" varchar(80) NULL -); ---Testcase 13: ETC... -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(991, 'Olympus Mons', 'SRID=104904;POINT (226.19749330952843 18.652758890345698)'::geometry, 'SRID=104904;MULTIPOLYGON (((223.78717231750488 23.3314151763916, 224.22803688049316 23.324007034301758, 224.32436180114746 23.5648136138916, 224.7186985015869 23.593564987182617, 224.79486274719238 23.45737648010254, 225.06530570983887 23.238798141479492, 225.67255210876465 23.437196731567383, 226.2211856842041 23.6611385345459, 226.5472011566162 23.65372657775879, 227.6215763092041 23.435148239135742, 228.19009590148926 23.390283584594727, 228.753023147583 23.24955177307129, 228.90711784362793 23.1943416595459, 229.23219108581543 23.004926681518555, 229.5288143157959 22.75514030456543, 229.87227058410645 22.442903518676758, 230.2469539642334 22.14628028869629, 230.7309169769287 21.927717208862305, 231.30854988098145 21.64670753479004, 231.85495948791504 21.084684371948242, 232.19841957092285 19.88258171081543, 231.88618278503418 18.47752571105957, 231.30854988098145 17.743772506713867, 231.21887397766113 17.218599319458008, 231.17812156677246 16.751802444458008, 230.97346687316895 16.353670120239258, 230.8327350616455 15.947111129760742, 230.62945365905762 15.478002548217773, 230.4574489593506 15.352907180786133, 230.20748329162598 15.29954719543457, 229.99631309509277 15.036508560180664, 229.72586631774902 14.640104293823242, 229.41096305847168 14.377065658569336, 228.98862266540527 14.10291862487793, 228.74040412902832 13.854700088500977, 228.5107135772705 13.83247184753418, 228.31806755065918 13.962137222290039, 227.93990516662598 13.929948806762695, 227.36133766174316 13.883039474487305, 227.04734230041504 13.813947677612305, 226.68895149230957 13.851762771606445, 226.4101276397705 13.839879989624023, 226.06347465515137 13.632848739624023, 225.7766170501709 13.617597579956055, 225.32925987243652 13.481771469116211, 224.76723670959473 13.591054916381836, 224.15838050842285 13.731557846069336, 223.12800407409668 14.106241226196289, 222.39425468444824 14.402864456176758, 221.67611503601074 14.918050765991211, 221.434663772583 15.403280258178711, 221.30129432678223 16.051607131958008, 221.0864200592041 16.410966873168945, 221.09012413024902 16.6591854095459, 221.1975612640381 17.09263801574707, 220.9971103668213 17.32316017150879, 220.75670051574707 17.422361373901367, 220.82338523864746 17.844701766967773, 221.18475532531738 18.073732376098633, 221.3567600250244 18.5584774017334, 221.40367317199707 19.10576820373535, 221.3567600250244 19.90325355529785, 221.42725563049316 20.59361457824707, 221.778959274292 21.40439796447754, 222.34188652038574 22.201879501342773, 223.01658821105957 23.272138595581055, 223.3759479522705 23.668546676635742, 223.3722438812256 23.675954818725586, 223.57600212097168 23.675954818725586, 223.70566749572754 23.542585372924805, 223.78717231750488 23.3314151763916)))'::geometry, '1973-01-01', 'mo', 'http://planetarynames.wr.usgs.gov/Feature/4453'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(248, 'Karzok', 'SRID=104904;POINT (228.262902951161 18.4035270924109)'::geometry, 'SRID=104904;MULTIPOLYGON (((228.269330978394 18.2748584747314, 228.266962051392 18.2748394012451, 228.264589309692 18.2748584747314, 228.26222038269 18.2749156951904, 228.259851455688 18.2750148773193, 228.257482528687 18.2751522064209, 228.255121231079 18.2753276824951, 228.252759933472 18.2755451202393, 228.250402450562 18.2757968902588, 228.248052597046 18.2760906219482, 228.245706558228 18.2764263153076, 228.243368148804 18.2767963409424, 228.241037368774 18.2772083282471, 228.23871421814 18.2776546478271, 228.236398696899 18.2781429290771, 228.234094619751 18.2786655426025, 228.231798171997 18.2792301177979, 228.229513168335 18.2798328399658, 228.227239608765 18.2804698944092, 228.224977493286 18.2811489105225, 228.222726821899 18.2818622589111, 228.220491409302 18.2826137542725, 228.218271255493 18.2833995819092, 228.216066360474 18.2842235565186, 228.213872909546 18.2850856781006, 228.211698532104 18.285982131958, 228.209539413452 18.2869167327881, 228.207399368286 18.2878856658936, 228.205278396606 18.2888889312744, 228.203172683716 18.2899265289307, 228.201089859009 18.2910022735596, 228.199026107788 18.2921085357666, 228.196981430054 18.2932529449463, 228.194959640503 18.2944278717041, 228.192956924438 18.2956371307373, 228.190980911255 18.2968769073486, 228.189023971558 18.2981548309326, 228.187093734741 18.2994594573975, 228.185186386108 18.3007984161377, 228.183305740356 18.3021678924561, 228.181447982788 18.3035678863525, 228.179616928101 18.3050022125244, 228.177812576294 18.3064632415771, 228.176038742065 18.307954788208, 228.174287796021 18.3094730377197, 228.172567367554 18.3110218048096, 228.170873641968 18.3126010894775, 228.16921043396 18.3142032623291, 228.16757774353 18.3158359527588, 228.165975570679 18.3174953460693, 228.164403915405 18.3191814422607, 228.162858963013 18.320894241333, 228.161352157593 18.3226299285889, 228.159872055054 18.3243923187256, 228.158430099487 18.3261775970459, 228.157014846802 18.3279857635498, 228.155637741089 18.3298168182373, 228.154294967651 18.3316707611084, 228.152982711792 18.3335475921631, 228.151708602905 18.3354473114014, 228.150468826294 18.337366104126, 228.149263381958 18.3393039703369, 228.148092269897 18.3412647247314, 228.14695930481 18.343240737915, 228.145864486694 18.3452396392822, 228.144804000854 18.3472537994385, 228.143781661987 18.3492832183838, 228.142793655396 18.3513317108154, 228.141847610474 18.3533954620361, 228.140939712524 18.3554744720459, 228.140066146851 18.3575687408447, 228.139234542847 18.3596782684326, 228.138441085815 18.3617992401123, 228.137685775757 18.3639354705811, 228.136972427368 18.3660831451416, 228.136297225952 18.3682422637939, 228.135660171509 18.3704090118408, 228.135065078735 18.3725872039795, 228.134511947632 18.37477684021, 228.133996963501 18.376974105835, 228.133520126343 18.3791828155518, 228.133085250854 18.3813953399658, 228.132692337036 18.3836154937744, 228.132341384888 18.3858432769775, 228.132028579712 18.3880748748779, 228.131757736206 18.3903102874756, 228.13152885437 18.3925533294678, 228.131341934204 18.39479637146, 228.131196975708 18.3970432281494, 228.131090164185 18.3992938995361, 228.131025314331 18.4015445709229, 228.131002426147 18.4037952423096, 228.131021499634 18.4060459136963, 228.13108253479 18.408296585083, 228.131185531616 18.4105472564697, 228.131326675415 18.4127941131592, 228.131513595581 18.4150371551514, 228.13173866272 18.4172801971436, 228.132005691528 18.4195156097412, 228.132314682007 18.4217510223389, 228.132661819458 18.4239749908447, 228.133054733276 18.4261989593506, 228.13348197937 18.4284114837646, 228.133955001831 18.4306163787842, 228.134466171265 18.4328174591064, 228.135019302368 18.4350070953369, 228.135610580444 18.4371852874756, 228.13624382019 18.4393558502197, 228.136919021606 18.4415149688721, 228.137628555298 18.4436626434326, 228.138380050659 18.4457988739014, 228.13917350769 18.4479236602783, 228.140001296997 18.4500331878662, 228.140871047974 18.452127456665, 228.141775131226 18.4542064666748, 228.142721176147 18.4562740325928, 228.143705368042 18.4583225250244, 228.144723892212 18.460355758667, 228.145784378052 18.4623699188232, 228.146879196167 18.4643688201904, 228.148008346558 18.4663486480713, 228.149175643921 18.4683094024658, 228.150381088257 18.4702472686768, 228.151620864868 18.4721698760986, 228.152894973755 18.4740695953369, 228.154203414917 18.4759464263916, 228.155546188354 18.47780418396, 228.156923294067 18.4796352386475, 228.158334732056 18.4814472198486, 228.159776687622 18.4832363128662, 228.161256790161 18.4849987030029, 228.162763595581 18.4867343902588, 228.164304733276 18.4884471893311, 228.16587638855 18.4901371002197, 228.167478561401 18.4917964935303, 228.169115066528 18.49342918396, 228.170778274536 18.4950351715088, 228.172468185425 18.4966144561768, 228.174192428589 18.4981670379639, 228.175939559937 18.4996891021729, 228.177717208862 18.5011806488037, 228.179521560669 18.5026454925537, 228.181352615356 18.5040760040283, 228.183210372925 18.5054798126221, 228.185094833374 18.5068492889404, 228.187002182007 18.5081920623779, 228.188936233521 18.50950050354, 228.190893173218 18.5107746124268, 228.192869186401 18.5120182037354, 228.194871902466 18.5132274627686, 228.196897506714 18.5144062042236, 228.198942184448 18.5155506134033, 228.201009750366 18.5166568756104, 228.203096389771 18.5177326202393, 228.205202102661 18.5187740325928, 228.207326889038 18.5197811126709, 228.209466934204 18.5207500457764, 228.211629867554 18.5216846466064, 228.213804244995 18.5225811004639, 228.21600151062 18.5234432220459, 228.218210220337 18.5242710113525, 228.220434188843 18.5250568389893, 228.22266960144 18.5258121490479, 228.224924087524 18.5265254974365, 228.227186203003 18.5272045135498, 228.229463577271 18.5278415679932, 228.23175239563 18.5284442901611, 228.234052658081 18.5290088653564, 228.236360549927 18.5295352935791, 228.238679885864 18.5300235748291, 228.241006851196 18.5304698944092, 228.243341445923 18.5308818817139, 228.245683670044 18.5312557220459, 228.248029708862 18.531587600708, 228.250383377075 18.5318813323975, 228.252744674683 18.5321369171143, 228.255109786987 18.5323505401611, 228.257474899292 18.5325298309326, 228.259847640991 18.5326671600342, 228.262216567993 18.5327663421631, 228.26459312439 18.5328235626221, 228.266965866089 18.5328426361084, 228.269342422485 18.5328235626221, 228.271715164185 18.5327625274658, 228.274087905884 18.5326671600342, 228.276456832886 18.5325298309326, 228.278825759888 18.5323505401611, 228.281187057495 18.5321369171143, 228.283548355103 18.5318813323975, 228.285902023315 18.531587600708, 228.288251876831 18.5312519073486, 228.290594100952 18.5308818817139, 228.292928695679 18.5304698944092, 228.295255661011 18.5300197601318, 228.297574996948 18.5295352935791, 228.299882888794 18.5290088653564, 228.302179336548 18.5284442901611, 228.304468154907 18.5278415679932, 228.306745529175 18.5272006988525, 228.309011459351 18.5265254974365, 228.311262130737 18.5258083343506, 228.313501358032 18.5250568389893, 228.315725326538 18.5242671966553, 228.317934036255 18.5234432220459, 228.320127487183 18.5225811004639, 228.322305679321 18.5216808319092, 228.324464797974 18.5207462310791, 228.326608657837 18.5197772979736, 228.328733444214 18.5187702178955, 228.330839157104 18.5177326202393, 228.332925796509 18.5166568756104, 228.334989547729 18.5155467987061, 228.337034225464 18.5144023895264, 228.339059829712 18.5132274627686, 228.341062545776 18.5120143890381, 228.343042373657 18.5107707977295, 228.344995498657 18.5094966888428, 228.346929550171 18.5081882476807, 228.348836898804 18.5068454742432, 228.350721359253 18.5054759979248, 228.352579116821 18.5040721893311, 228.354410171509 18.5026416778564, 228.356214523315 18.5011768341064, 228.357992172241 18.4996852874756, 228.359739303589 18.4981632232666, 228.361463546753 18.4966106414795, 228.363153457642 18.4950313568115, 228.364816665649 18.4934253692627, 228.366449356079 18.491792678833, 228.368055343628 18.4901294708252, 228.369626998901 18.4884433746338, 228.371168136597 18.4867305755615, 228.372674942017 18.4849910736084, 228.374151229858 18.4832286834717, 228.375597000122 18.4814434051514, 228.37700843811 18.4796314239502, 228.378385543823 18.4778003692627, 228.379728317261 18.4759426116943, 228.381036758423 18.4740619659424, 228.38231086731 18.4721660614014, 228.383550643921 18.4702434539795, 228.38475227356 18.4683017730713, 228.385919570923 18.4663410186768, 228.387052536011 18.4643650054932, 228.388147354126 18.462366104126, 228.389204025269 18.4603481292725, 228.390226364136 18.4583187103271, 228.391206741333 18.4562664031982, 228.392152786255 18.4542026519775, 228.393060684204 18.4521198272705, 228.393926620483 18.4500255584717, 228.394758224487 18.4479160308838, 228.395547866821 18.4457950592041, 228.396299362183 18.4436588287354, 228.397012710571 18.4415111541748, 228.39768409729 18.4393520355225, 228.398317337036 18.4371814727783, 228.398908615112 18.4349994659424, 228.399461746216 18.4328098297119, 228.399972915649 18.4306125640869, 228.40044593811 18.4284076690674, 228.400876998901 18.4261913299561, 228.401266098022 18.4239711761475, 228.401613235474 18.4217433929443, 228.401922225952 18.4195117950439, 228.402189254761 18.417272567749, 228.402414321899 18.4150333404541, 228.402597427368 18.4127864837646, 228.402742385864 18.4105396270752, 228.40284538269 18.4082927703857, 228.402902603149 18.406042098999, 228.402921676636 18.403787612915, 228.402898788452 18.4015369415283, 228.402837753296 18.3992862701416, 228.402730941772 18.3970394134521, 228.402585983276 18.3947887420654, 228.402395248413 18.3925457000732, 228.402166366577 18.3903064727783, 228.401895523071 18.3880672454834, 228.401586532593 18.385835647583, 228.401231765747 18.3836116790771, 228.400838851929 18.3813877105713, 228.40040397644 18.3791751861572, 228.399930953979 18.3769702911377, 228.399415969849 18.3747730255127, 228.398859024048 18.3725833892822, 228.398263931274 18.3704051971436, 228.397626876831 18.3682346343994, 228.396951675415 18.3660755157471, 228.396238327026 18.3639316558838, 228.395483016968 18.361795425415, 228.394689559937 18.3596744537354, 228.393857955933 18.3575649261475, 228.392988204956 18.3554706573486, 228.39207649231 18.3533916473389, 228.391130447388 18.3513278961182, 228.390146255493 18.3492794036865, 228.389120101929 18.3472461700439, 228.388063430786 18.3452320098877, 228.386964797974 18.3432369232178, 228.385831832886 18.3412609100342, 228.384660720825 18.3393001556396, 228.383455276489 18.3373622894287, 228.382215499878 18.3354434967041, 228.380941390991 18.3335437774658, 228.379629135132 18.3316669464111, 228.378286361694 18.32981300354, 228.376905441284 18.3279819488525, 228.375494003296 18.3261699676514, 228.374048233032 18.3243846893311, 228.37257194519 18.3226261138916, 228.371061325073 18.3208866119385, 228.369520187378 18.3191776275635, 228.367948532104 18.3174915313721, 228.366346359253 18.3158321380615, 228.364709854126 18.3141994476318, 228.363046646118 18.3125972747803, 228.361356735229 18.3110179901123, 228.359636306763 18.3094692230225, 228.357885360718 18.3079509735107, 228.356107711792 18.3064594268799, 228.354303359985 18.3049983978271, 228.352472305298 18.3035640716553, 228.350618362427 18.3021640777588, 228.348733901978 18.3007946014404, 228.346826553345 18.2994556427002, 228.344896316528 18.2981510162354, 228.342943191528 18.2968769073486, 228.340963363647 18.29563331604, 228.33896446228 18.2944240570068, 228.336938858032 18.293249130249, 228.334897994995 18.2921085357666, 228.332830429077 18.2909984588623, 228.33074760437 18.2899265289307, 228.328645706177 18.2888851165771, 228.3265209198 18.2878818511963, 228.324380874634 18.2869129180908, 228.322221755981 18.285982131958, 228.32004737854 18.2850856781006, 228.31785774231 18.2842235565186, 228.315649032593 18.2833995819092, 228.313428878784 18.2826099395752, 228.311193466187 18.2818584442139, 228.3089427948 18.2811450958252, 228.306684494019 18.2804698944092, 228.304410934448 18.2798290252686, 228.302125930786 18.2792301177979, 228.299829483032 18.2786655426025, 228.297521591187 18.2781391143799, 228.295206069946 18.2776546478271, 228.292882919312 18.2772045135498, 228.290552139282 18.2767963409424, 228.288213729858 18.2764225006104, 228.28586769104 18.2760906219482, 228.283517837524 18.2757968902588, 228.281160354614 18.2755451202393, 228.278802871704 18.2753276824951, 228.276437759399 18.2751522064209, 228.274072647095 18.2750148773193, 228.271703720093 18.2749156951904, 228.269330978394 18.2748584747314)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14144'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(249, 'Pangboche', 'SRID=104904;POINT (226.595873773026 17.2783598670807)'::geometry, 'SRID=104904;MULTIPOLYGON (((226.601442337036 17.1929302215576, 226.599878311157 17.1929187774658, 226.598310470581 17.1929302215576, 226.596746444702 17.1929721832275, 226.595178604126 17.1930370330811, 226.593618392944 17.1931285858154, 226.592054367065 17.1932430267334, 226.590497970581 17.1933879852295, 226.588941574097 17.1935558319092, 226.587385177612 17.193754196167, 226.585836410522 17.1939754486084, 226.58429145813 17.1942195892334, 226.582754135132 17.1944942474365, 226.581216812134 17.1947917938232, 226.57968711853 17.1951160430908, 226.578165054321 17.195463180542, 226.576650619507 17.195837020874, 226.57513999939 17.1962375640869, 226.573637008667 17.1966648101807, 226.572145462036 17.197114944458, 226.570657730103 17.1975879669189, 226.569181442261 17.1980876922607, 226.567712783813 17.1986103057861, 226.566255569458 17.1991596221924, 226.564809799194 17.1997318267822, 226.563371658325 17.2003269195557, 226.561948776245 17.20094871521, 226.56053352356 17.2015933990479, 226.559129714966 17.2022609710693, 226.557741165161 17.2029514312744, 226.556364059448 17.2036647796631, 226.555002212524 17.2044010162354, 226.553651809692 17.2051601409912, 226.552316665649 17.2059421539307, 226.550992965698 17.2067432403564, 226.549688339233 17.2075710296631, 226.54839515686 17.2084178924561, 226.547121047974 17.2092876434326, 226.545862197876 17.2101764678955, 226.544618606567 17.211088180542, 226.543394088745 17.2120189666748, 226.542184829712 17.2129688262939, 226.540990829468 17.2139415740967, 226.539819717407 17.2149333953857, 226.538663864136 17.2159404754639, 226.537527084351 17.2169704437256, 226.536409378052 17.2180194854736, 226.535310745239 17.219087600708, 226.534231185913 17.2201709747314, 226.533174514771 17.2212734222412, 226.532133102417 17.2223949432373, 226.531118392944 17.2235317230225, 226.530118942261 17.2246875762939, 226.529146194458 17.2258586883545, 226.528188705444 17.2270450592041, 226.527257919312 17.2282466888428, 226.526346206665 17.2294635772705, 226.525461196899 17.2306995391846, 226.52459526062 17.2319469451904, 226.523752212524 17.2332057952881, 226.522932052612 17.2344837188721, 226.522138595581 17.2357730865479, 226.521364212036 17.2370738983154, 226.520616531372 17.2383899688721, 226.519891738892 17.2397136688232, 226.519193649292 17.2410526275635, 226.518518447876 17.2424030303955, 226.517869949341 17.2437648773193, 226.517244338989 17.245138168335, 226.516641616821 17.2465190887451, 226.516069412231 17.2479114532471, 226.515520095825 17.2493152618408, 226.514993667603 17.2507228851318, 226.514497756958 17.2521419525146, 226.514024734497 17.253568649292, 226.513578414917 17.2550029754639, 226.513158798218 17.2564449310303, 226.512765884399 17.2578945159912, 226.512399673462 17.2593479156494, 226.512060165405 17.2608089447021, 226.511747360229 17.2622776031494, 226.511461257935 17.2637462615967, 226.511201858521 17.2652225494385, 226.510969161987 17.2667026519775, 226.510766983032 17.2681865692139, 226.510587692261 17.2696743011475, 226.51043510437 17.2711620330811, 226.510313034058 17.2726535797119, 226.510217666626 17.27414894104, 226.510149002075 17.2756404876709, 226.510107040405 17.277135848999, 226.510091781616 17.2786350250244, 226.510103225708 17.2801303863525, 226.510145187378 17.2816257476807, 226.510213851929 17.2831211090088, 226.510305404663 17.2846164703369, 226.510431289673 17.2861080169678, 226.510580062866 17.2875957489014, 226.51075553894 17.289083480835, 226.510957717896 17.2905673980713, 226.511190414429 17.2920475006104, 226.511449813843 17.2935237884521, 226.51173210144 17.2949924468994, 226.512044906616 17.2964611053467, 226.512384414673 17.2979221343994, 226.51275062561 17.2993755340576, 226.513139724731 17.3008251190186, 226.513559341431 17.302267074585, 226.514001846313 17.3037014007568, 226.514474868774 17.3051280975342, 226.514970779419 17.306547164917, 226.515493392944 17.3079586029053, 226.516042709351 17.309362411499, 226.51661491394 17.310754776001, 226.517213821411 17.3121356964111, 226.517839431763 17.3135089874268, 226.518487930298 17.3148708343506, 226.519163131714 17.3162212371826, 226.519861221313 17.3175601959229, 226.520586013794 17.3188877105713, 226.521333694458 17.3202037811279, 226.522104263306 17.3215045928955, 226.522897720337 17.3227939605713, 226.523717880249 17.3240718841553, 226.524557113647 17.3253345489502, 226.525423049927 17.3265819549561, 226.52631187439 17.3278141021729, 226.527219772339 17.3290348052979, 226.528150558472 17.3302364349365, 226.529108047485 17.3314228057861, 226.530080795288 17.3325939178467, 226.531076431274 17.3337497711182, 226.532094955444 17.3348903656006, 226.533132553101 17.3360080718994, 226.53419303894 17.3371143341064, 226.535272598267 17.3381977081299, 226.536371231079 17.3392658233643, 226.537488937378 17.3403148651123, 226.538625717163 17.341344833374, 226.539781570435 17.3423557281494, 226.540952682495 17.3433475494385, 226.542146682739 17.3443202972412, 226.543355941772 17.3452739715576, 226.544580459595 17.3462047576904, 226.545824050903 17.3471164703369, 226.547082901001 17.3480052947998, 226.548360824585 17.3488750457764, 226.549654006958 17.3497219085693, 226.550958633423 17.350549697876, 226.552282333374 17.351354598999, 226.553617477417 17.3521366119385, 226.554967880249 17.3528957366943, 226.55633354187 17.3536319732666, 226.557710647583 17.3543453216553, 226.559099197388 17.3550395965576, 226.560503005981 17.3557071685791, 226.561918258667 17.356351852417, 226.563344955444 17.356969833374, 226.564783096313 17.3575687408447, 226.566232681274 17.3581409454346, 226.56768989563 17.3586902618408, 226.569158554077 17.3592128753662, 226.570634841919 17.359712600708, 226.572122573853 17.3601894378662, 226.573617935181 17.3606395721436, 226.575120925903 17.36106300354, 226.576631546021 17.3614635467529, 226.578149795532 17.361837387085, 226.579675674438 17.3621883392334, 226.581205368042 17.362512588501, 226.58274269104 17.3628101348877, 226.584283828735 17.3630847930908, 226.585828781128 17.3633289337158, 226.587377548218 17.3635501861572, 226.588933944702 17.363748550415, 226.590490341187 17.3639163970947, 226.592050552368 17.3640613555908, 226.593614578247 17.3641757965088, 226.595178604126 17.3642673492432, 226.596746444702 17.3643321990967, 226.598314285278 17.3643741607666, 226.599882125854 17.3643856048584, 226.601449966431 17.3643741607666, 226.603017807007 17.3643321990967, 226.604581832886 17.3642673492432, 226.606145858765 17.3641757965088, 226.607709884644 17.3640613555908, 226.609270095825 17.3639163970947, 226.610830307007 17.3637447357178, 226.612382888794 17.3635501861572, 226.613931655884 17.3633289337158, 226.615480422974 17.3630809783936, 226.617021560669 17.3628101348877, 226.618558883667 17.362512588501, 226.620088577271 17.3621883392334, 226.621610641479 17.361837387085, 226.623128890991 17.3614635467529, 226.624639511108 17.36106300354, 226.626142501831 17.3606395721436, 226.627637863159 17.3601856231689, 226.629125595093 17.359712600708, 226.630601882935 17.3592128753662, 226.632070541382 17.3586902618408, 226.633531570435 17.3581409454346, 226.634977340698 17.3575687408447, 226.636415481567 17.356969833374, 226.637842178345 17.3563480377197, 226.63925743103 17.3557033538818, 226.640661239624 17.3550357818604, 226.642049789429 17.3543453216553, 226.643426895142 17.3536319732666, 226.644792556763 17.3528957366943, 226.646142959595 17.3521327972412, 226.647478103638 17.3513507843018, 226.648801803589 17.3505458831787, 226.650110244751 17.3497219085693, 226.651399612427 17.3488750457764, 226.652677536011 17.3480052947998, 226.653936386108 17.3471126556396, 226.655179977417 17.3462009429932, 226.656408309937 17.3452701568604, 226.65761756897 17.3443202972412, 226.658807754517 17.3433475494385, 226.659982681274 17.3423557281494, 226.661138534546 17.341344833374, 226.662275314331 17.3403148651123, 226.66339302063 17.3392658233643, 226.664487838745 17.3381977081299, 226.665567398071 17.3371105194092, 226.666627883911 17.3360080718994, 226.667665481567 17.3348865509033, 226.668684005737 17.3337459564209, 226.669679641724 17.3325939178467, 226.670656204224 17.3314228057861, 226.67160987854 17.3302326202393, 226.672540664673 17.3290309906006, 226.673448562622 17.3278141021729, 226.674337387085 17.3265781402588, 226.675203323364 17.3253307342529, 226.676042556763 17.324068069458, 226.676862716675 17.3227939605713, 226.677656173706 17.3215007781982, 226.678426742554 17.3201999664307, 226.679174423218 17.318883895874, 226.679899215698 17.3175563812256, 226.680597305298 17.3162174224854, 226.681272506714 17.3148670196533, 226.681921005249 17.3135051727295, 226.682546615601 17.3121318817139, 226.683145523071 17.3107509613037, 226.683717727661 17.3093585968018, 226.684267044067 17.307954788208, 226.684789657593 17.3065433502197, 226.685285568237 17.3051242828369, 226.685754776001 17.3036975860596, 226.686201095581 17.3022632598877, 226.686616897583 17.3008213043213, 226.687009811401 17.2993717193604, 226.687376022339 17.2979183197021, 226.687715530396 17.2964572906494, 226.688024520874 17.2949886322021, 226.688310623169 17.2935199737549, 226.688570022583 17.2920436859131, 226.688798904419 17.290563583374, 226.689004898071 17.2890796661377, 226.689180374146 17.2875919342041, 226.689329147339 17.2861042022705, 226.689451217651 17.2846126556396, 226.689546585083 17.2831172943115, 226.689615249634 17.2816219329834, 226.689653396606 17.2801265716553, 226.689668655396 17.2786312103271, 226.689653396606 17.277135848999, 226.689611434937 17.2756366729736, 226.689542770386 17.2741451263428, 226.689443588257 17.2726497650146, 226.689321517944 17.2711582183838, 226.689168930054 17.2696704864502, 226.688993453979 17.2681827545166, 226.688787460327 17.2666988372803, 226.688554763794 17.2652187347412, 226.68829536438 17.2637424468994, 226.688009262085 17.2622737884521, 226.687696456909 17.2608051300049, 226.687356948853 17.2593441009521, 226.686990737915 17.2578907012939, 226.686597824097 17.256441116333, 226.686178207397 17.2549991607666, 226.685731887817 17.2535648345947, 226.685258865356 17.2521381378174, 226.684762954712 17.2507190704346, 226.684236526489 17.2493114471436, 226.683687210083 17.2479076385498, 226.683115005493 17.2465152740479, 226.682512283325 17.2451343536377, 226.681886672974 17.2437610626221, 226.681238174438 17.2424030303955, 226.680562973022 17.2410526275635, 226.679864883423 17.2397136688232, 226.679140090942 17.2383861541748, 226.678392410278 17.2370700836182, 226.677618026733 17.2357692718506, 226.676824569702 17.2344799041748, 226.67600440979 17.2332057952881, 226.675161361694 17.2319431304932, 226.674295425415 17.2306957244873, 226.673410415649 17.2294635772705, 226.672498703003 17.2282428741455, 226.671564102173 17.2270412445068, 226.670610427856 17.2258548736572, 226.669637680054 17.2246837615967, 226.66863822937 17.2235317230225, 226.6676197052 17.22239112854, 226.666582107544 17.2212734222412, 226.665525436401 17.2201709747314, 226.664445877075 17.2190837860107, 226.663347244263 17.2180194854736, 226.662229537964 17.2169704437256, 226.661092758179 17.2159404754639, 226.659936904907 17.2149295806885, 226.658761978149 17.2139377593994, 226.657571792603 17.2129650115967, 226.656362533569 17.2120151519775, 226.655138015747 17.2110843658447, 226.653894424438 17.2101726531982, 226.652635574341 17.2092838287354, 226.651357650757 17.2084140777588, 226.650068283081 17.2075672149658, 226.648759841919 17.2067432403564, 226.647439956665 17.2059383392334, 226.646104812622 17.2051563262939, 226.64475440979 17.2043972015381, 226.643388748169 17.2036609649658, 226.642011642456 17.2029476165771, 226.640623092651 17.2022571563721, 226.639223098755 17.2015895843506, 226.637807846069 17.2009449005127, 226.636381149292 17.2003269195557, 226.63494682312 17.1997318267822, 226.633497238159 17.1991558074951, 226.632040023804 17.1986103057861, 226.630575180054 17.1980838775635, 226.629095077515 17.1975879669189, 226.627611160278 17.1971111297607, 226.62611579895 17.1966609954834, 226.624616622925 17.1962375640869, 226.623106002808 17.195837020874, 226.621587753296 17.195463180542, 226.620065689087 17.1951160430908, 226.618535995483 17.1947917938232, 226.617002487183 17.1944942474365, 226.615461349487 17.1942195892334, 226.613916397095 17.1939716339111, 226.612367630005 17.1937503814697, 226.610815048218 17.1935558319092, 226.609258651733 17.1933879852295, 226.607698440552 17.1932430267334, 226.60613822937 17.1931285858154, 226.604574203491 17.1930370330811, 226.603010177612 17.1929721832275, 226.601442337036 17.1929302215576)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14145'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(301, 'Nix Olympica', 'SRID=104904;POINT (230 19.7835659606)'::geometry, NULL, '1958-01-01', 'al', 'http://planetarynames.wr.usgs.gov/Feature/4314'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1849, 'Hermes Patera', 'SRID=104904;POINT (226.57 18.33)'::geometry, 'SRID=104904;POLYGON ((226.27743530274 18.067016601562, 226.25820922852 18.135681152343, 226.255462646485 18.216705322265124, 226.26507568359813 18.293609619139627, 226.25614929199594 18.331375122069314, 226.26095581055 18.369140624999, 226.28842163086 18.465270996093, 226.35159301758 18.528442382812, 226.44772338867 18.577880859374, 226.48480224609438 18.594360351561626, 226.52462768555 18.6026000976555, 226.57955932617 18.608093261718, 226.68118286133 18.586120605468, 226.70590209961 18.569641113281, 226.74435424805 18.539428710937, 226.78555297852 18.514709472656, 226.83224487305 18.498229980468, 226.86932373046687 18.488616943359126, 226.89404296875 18.4721374511715, 226.90090942383 18.451538085937, 226.90640258789 18.410339355468, 226.91189575195 18.380126953124, 226.92013549805 18.322448730468, 226.90640258789 18.251037597656, 226.87344360352 18.187866210937, 226.82949829102 18.146667480468, 226.79379272461 18.113708496093, 226.77456665039 18.102722167968, 226.72787475586 18.119201660156, 226.68392944336 18.141174316406, 226.63723754883125 18.15490722656175, 226.58779907226562 18.14254760742125, 226.56033325195 18.121948242187, 226.52188110352 18.088989257812, 226.48617553711 18.067016601562, 226.45321655274 18.083496093749, 226.38729858399 18.086242675781, 226.32412719727 18.078002929687, 226.27743530274 18.067016601562))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15690'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1688, 'Olympus Rupes', 'SRID=104904;POINT (226.43548539543502 18.401964175317982)'::geometry, 'SRID=104904;MULTILINESTRING ((227.42951774597168 22.934080123901367, 227.93671226501465 22.65593910217285, 228.34573936462402 22.4268856048584, 228.52571296691895 22.295995712280273, 228.67296028137207 22.099660873413086, 228.96746253967285 22.099660873413086, 229.62190437316895 21.739717483520508, 230.1290988922119 21.477941513061523, 230.35815620422363 21.26524543762207, 230.38258171081543 21.086992263793945, 230.2117748260498 20.55558967590332, 230.71787071228027 19.182798385620117, 230.8653507232666 18.500219345092773, 230.8653507232666 18.058469772338867, 230.8653507232666 17.96030616760254, 230.88171195983887 16.978639602661133, 230.9144344329834 16.635053634643555, 230.73446083068848 16.389638900756836, 230.6690158843994 16.242387771606445, 230.55448722839355 15.980611801147461, 230.45632362365723 15.816999435424805, 230.35815620422363 15.506139755249023, 230.0472927093506 15.457056045532227, 229.83220100402832 15.140348434448242, 229.54010200500488 14.73716926574707, 229.22923851013184 14.442667007446289, 228.86929512023926 14.213613510131836, 228.5420742034912 14.05000114440918, 228.2148494720459 14.148168563842773, 227.8221836090088 14.148168563842773, 227.2168254852295 13.984556198120117, 226.85687828063965 13.968194961547852, 226.49693489074707 14.05000114440918, 226.0879077911377 13.77186393737793, 225.80977058410645 13.755502700805664, 225.55567741394043 13.881429672241211, 225.3911952972412 14.058565139770508, 224.9426326751709 14.73716926574707, 224.76265907287598 14.73716926574707, 224.36999320983887 14.573556900024414, 223.97732734680176 14.802610397338867, 223.29015922546387 15.12983512878418, 222.70116233825684 15.391611099243164, 222.4393825531006 15.40797233581543, 221.93218803405762 15.40797233581543, 221.57224464416504 15.66975212097168, 221.4413547515869 16.09514045715332, 221.3431911468506 16.700498580932617, 221.39227104187012 17.07680320739746, 221.16321754455566 17.404027938842773, 220.89009284973145 17.53165626525879, 220.90144157409668 17.84577751159668, 221.14274787902832 17.76296043395996, 221.52316093444824 17.61672019958496, 221.86674308776855 18.074831008911133, 222.06307792663574 18.614748001098633, 221.8994655609131 18.860166549682617, 221.6376895904541 19.252832412719727, 221.62132835388184 19.59641456604004, 221.7358570098877 20.185415267944336, 221.94854927062988 20.774412155151367, 222.079439163208 21.26524543762207, 222.48846626281738 21.854246139526367, 222.99566078186035 22.508691787719727, 223.43741035461426 22.934080123901367, 223.78099250793457 23.13041114807129, 224.04277229309082 23.064966201782227, 224.3045482635498 22.999521255493164, 224.72993659973145 22.934080123901367, 224.9917163848877 22.88499641418457, 225.2862148284912 22.934080123901367, 225.72796440124512 23.01588249206543, 226.2351589202881 23.146772384643555, 226.61146354675293 23.27766227722168, 227.05321311950684 23.097688674926758, 227.42951774597168 22.934080123901367))'::geometry, '1976-01-01', 'ru', 'http://planetarynames.wr.usgs.gov/Feature/4454'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1847, 'Zeus Patera', 'SRID=104904;POINT (227.07 18.39)'::geometry, 'SRID=104904;POLYGON ((226.50457763673 18.675384521485, 226.51556396485 18.70834350586, 226.55401611329 18.766021728516, 226.6254272461 18.820953369141, 226.71881103516 18.853912353516, 226.82043457032 18.886871337891, 226.91107177735 18.886871337891, 226.99621582032 18.875885009766, 227.03741455079 18.873138427735, 226.99346923829 18.831939697266, 226.97973632813 18.77426147461, 226.99896240235 18.702850341797, 227.06213378907 18.631439208985, 227.15002441407 18.584747314454, 227.23516845704 18.568267822266, 227.30383300781875 18.59024047851625, 227.33404541016 18.628692626954, 227.34503173829 18.658905029297, 227.39721679688 18.587493896485, 227.42742919923 18.494110107422, 227.42193603516 18.408966064454, 227.39996337891 18.315582275391, 227.39172363282 18.227691650391, 227.34228515626 18.123321533204, 227.29559326173 18.018951416016, 227.21319580079 17.942047119141, 227.15551757813 17.903594970704, 227.09783935548 17.876129150391, 227.00170898438 17.845916748047, 226.9330444336 17.840423583985, 226.88635253907 17.840423583985, 226.90832519532 17.876129150391, 226.91381835938 17.925567626954, 226.90283203126 17.972259521485, 226.87536621094 18.021697998047, 226.82318115235 18.062896728516, 226.77923583985 18.098602294922, 226.83691406251 18.156280517579, 226.88360595704 18.233184814454, 226.91107177735 18.315582275391, 226.8890991211 18.40072631836, 226.88085937501 18.474884033204, 226.83142089844 18.507843017579, 226.72430419923 18.546295166016, 226.67761230469 18.584747314454, 226.6254272461 18.614959716797, 226.58972167969 18.617706298829, 226.62817382813 18.645172119141, 226.67761230469 18.650665283204, 226.61993408204 18.661651611329, 226.56500244141 18.64242553711, 226.4935913086 18.653411865235, 226.50457763673 18.675384521485))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15689'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1848, 'Athena Patera', 'SRID=104904;POINT (227.18 18.74)'::geometry, 'SRID=104904;POLYGON ((227.0290374756 18.766021728515, 227.04002380372 18.807220458984, 227.06062316896 18.840179443359, 227.08259582521 18.867645263671, 227.12928771974 18.880004882812, 227.17597961427 18.877258300781, 227.22541809083 18.866271972656, 227.28172302247 18.825073242187, 227.31605529786 18.775634765624, 227.328414917 18.731689453124, 227.33116149903 18.691864013671, 227.30369567872 18.656158447265, 227.2844696045 18.619079589843, 227.23915100099 18.599853515624, 227.18147277833 18.599853515624, 227.10594177247 18.624572753906, 227.05513000489 18.665771484374, 227.02491760255 18.705596923828, 227.0207977295 18.744049072265, 227.0290374756 18.766021728515))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15693'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1850, 'Apollo Patera', 'SRID=104904;POINT (226.45 17.94)'::geometry, 'SRID=104904;POLYGON ((226.28540039064 17.909774780272, 226.27441406252 17.938613891601, 226.26754760744 17.981185913085, 226.27716064455 18.027877807616, 226.30325317385 18.074569702147, 226.35818481447 18.091049194335, 226.40075683596 18.091049194335, 226.46804809572 18.073196411132, 226.52572631838 18.045730590819, 226.56967163088 18.023757934569, 226.63146972658 17.946853637694, 226.63558959963 17.878189086913, 226.62185668947 17.83836364746, 226.61911010744 17.806777954101, 226.59439086916 17.788925170897, 226.52847290041 17.780685424804, 226.45980834963 17.808151245116, 226.40899658205 17.832870483397, 226.37878417971 17.841110229491, 226.33758544924 17.864456176757, 226.30462646486 17.887802124022, 226.28540039064 17.909774780272))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15694'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1851, 'Olympus Paterae', 'SRID=104904;POINT (226.81 18.32)'::geometry, 'SRID=104904;POLYGON ((226.14367675781 18.452911376953, 226.16564941406 18.513336181641, 226.2041015625 18.554534912109, 226.23431396484 18.592987060547, 226.30572509766 18.625946044922, 226.36889648438 18.650665283203, 226.42108154297 18.653411865234, 226.45678710938 18.642425537109, 226.49249267578 18.700103759766, 226.54193115234 18.755035400391, 226.58312988281 18.809967041016, 226.65454101563 18.845672607422, 226.72320556641 18.870391845703, 226.82757568359 18.895111083984, 226.88525390625 18.911590576172, 226.96545410157 18.900604248046, 227.0121459961 18.900604248046, 227.04785156251 18.889617919921, 227.08355712891 18.906097412109, 227.13299560548 18.917083740234, 227.21813964844 18.911590576171, 227.28405761719 18.875885009765, 227.33349609376 18.829193115234, 227.37194824219 18.771514892578, 227.37744140626 18.735809326171, 227.38156127930375 18.711776733397812, 227.3808746337928 18.69255065917931, 227.37469482423 18.675384521484, 227.40216064454 18.620452880859, 227.43237304688 18.571014404296, 227.4515991211 18.496856689453, 227.45709228516 18.441925048828, 227.44885253907 18.38150024414, 227.44061279298 18.323822021484, 227.43237304688 18.277130126953, 227.41589355469 18.202972412109, 227.38018798829 18.120574951171, 227.34448242188 18.05191040039, 227.31701660157 17.999725341796, 227.26757812501 17.950286865234, 227.22088623048 17.911834716796, 227.17419433594 17.870635986328, 227.12475585938 17.848663330078, 227.03686523438 17.821197509765, 226.97918701173 17.801971435546, 226.88580322266 17.815704345703, 226.85009765626 17.790985107421, 226.81439208985 17.769012451171, 226.7484741211 17.741546630859, 226.68530273438 17.733306884765, 226.62762451173 17.738800048828, 226.57543945313 17.736053466796, 226.50128173829 17.72232055664, 226.39416503907 17.758026123046, 226.32550048829 17.78823852539, 226.29803466798 17.823944091796, 226.27056884766 17.843170166015, 226.21289062501 17.89810180664, 226.20465087891 17.966766357421, 226.22937011719 18.035430908203, 226.20465087891 18.084869384765, 226.18267822266 18.13980102539, 226.17169189454 18.18374633789, 226.17993164063 18.20571899414, 226.15795898438 18.252410888671, 226.13873291016 18.318328857421, 226.13049316407 18.389739990234, 226.14367675781 18.452911376953))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15695'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1870, 'Dionysus Patera', 'SRID=104904;POINT (226.77 17.96)'::geometry, 'SRID=104904;POLYGON ((226.53973388672 18.046417236328, 226.564453125 18.082122802735, 226.60015869141 18.11508178711, 226.64410400391 18.134307861328, 226.71826171875 18.117828369141, 226.77868652344 18.09310913086, 226.83361816406 18.043670654297, 226.87756347656 17.988739013672, 226.89129638672 17.936553955078, 226.8720703125 17.870635986328, 226.828125 17.82943725586, 226.7484741211 17.799224853516, 226.68530273438 17.793731689453, 226.64959716797 17.78549194336, 226.61389160156 17.782745361328, 226.63037109375 17.848663330078, 226.63037109375 17.914581298828, 226.62213134766 17.972259521485, 226.58093261719 18.021697998047, 226.53973388672 18.046417236328))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15692'); -INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1871, 'Hera Patera', 'SRID=104904;POINT (226.23 18.45)'::geometry, 'SRID=104904;POLYGON ((226.21000671387 18.244171142578, 226.18116760254063 18.30047607421875, 226.17567443848188 18.347167968749623, 226.17155456543125 18.41445922851525, 226.19902038575 18.489990234375377, 226.24021911621563 18.549041748046875, 226.32124328613438 18.602600097655873, 226.37892150879125 18.616333007812376, 226.44209289551 18.61083984375, 226.396774292 18.582000732422, 226.3610687255875 18.55316162109375, 226.31986999512 18.511962890625, 226.2827911377 18.474884033203, 226.27043151856 18.428192138672, 226.24845886231 18.367767333984, 226.24021911621 18.21533203125, 226.21000671387 18.244171142578))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15691'); - --- TEST GIS DATA FROM OPENSTREETMAP: EARTH, Ancienne Sylvie ---Testcase 14: -CREATE TABLE "♁" ( - geom public.geometry NOT NULL, - osm_type varchar(16) NOT NULL, - osm_id int8 NOT NULL, - ver int2 NOT NULL, - arr _int8 NULL, - t json NULL -); ---Testcase 15: ETC... -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4596087 59.6907755)'::geometry, 'node', 1621246531, 4, NULL, '{"drain":"disperse"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601391 59.6904673)'::geometry, 'node', 1621246620, 24, NULL, '{"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617098 59.6910199)'::geometry, 'node', 1632220259, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617672 59.6909141)'::geometry, 'node', 1632220283, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461757 59.6909696)'::geometry, 'node', 1632220292, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614802 59.6907676)'::geometry, 'node', 1632220315, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615866 59.6907823)'::geometry, 'node', 1632220319, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611444 59.6908848)'::geometry, 'node', 1632220350, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611916 59.6908345)'::geometry, 'node', 1632220355, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.46127 59.6907954)'::geometry, 'node', 1632220358, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611342 59.6909402)'::geometry, 'node', 1632220359, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614212 59.6910868)'::geometry, 'node', 1632220364, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611621 59.6909941)'::geometry, 'node', 1632220366, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616766 59.6908145)'::geometry, 'node', 1632220378, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616314 59.691059)'::geometry, 'node', 1632220590, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613148 59.6910721)'::geometry, 'node', 1632220686, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613385 59.6907988)'::geometry, 'node', 1632497609, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614438 59.6907856)'::geometry, 'node', 1632497610, 30, NULL, '{"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461244 59.690833)'::geometry, 'node', 1632497611, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617227 59.6909514)'::geometry, 'node', 1632497612, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615805 59.6907985)'::geometry, 'node', 1632497613, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616825 59.6908428)'::geometry, 'node', 1632497614, 29, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614541 59.6909278)'::geometry, 'node', 1632497615, 34, NULL, '{"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616021 59.6910564)'::geometry, 'node', 1632497616, 26, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616651 59.6910293)'::geometry, 'node', 1632497617, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614666 59.6910732)'::geometry, 'node', 1632497618, 30, NULL, '{"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613231 59.6910597)'::geometry, 'node', 1632497619, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612077 59.691005)'::geometry, 'node', 1632497620, 31, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611782 59.690902)'::geometry, 'node', 1632497621, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612041 59.6907321)'::geometry, 'node', 1632503254, 6, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.462536 59.6908707)'::geometry, 'node', 1652587953, 5, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4619277 59.6908578)'::geometry, 'node', 1652587958, 5, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617256 59.6909215)'::geometry, 'node', 3177639362, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612018 59.6909805)'::geometry, 'node', 3188928044, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613001 59.6906759)'::geometry, 'node', 3218618266, 4, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614144 59.6907882)'::geometry, 'node', 4912277772, 4, NULL, '{"board_type":"history","information":"board","name":"Флора","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615482 59.6907937)'::geometry, 'node', 4912277773, 4, NULL, '{"board_type":"history","information":"board","name":"Урания","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613145 59.6908057)'::geometry, 'node', 4912277774, 4, NULL, '{"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616653 59.6908341)'::geometry, 'node', 4912277775, 4, NULL, '{"board_type":"history","information":"board","name":"Клио","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612216 59.6908451)'::geometry, 'node', 4912277776, 4, NULL, '{"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611751 59.690919)'::geometry, 'node', 4912277777, 4, NULL, '{"board_type":"history","information":"board","name":"Талия","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617272 59.6909351)'::geometry, 'node', 4912277778, 4, NULL, '{"board_type":"history","information":"board","name":"Калиопа","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612298 59.691015)'::geometry, 'node', 4912277779, 4, NULL, '{"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616819 59.6910157)'::geometry, 'node', 4912277780, 4, NULL, '{"board_type":"history","information":"board","name":"Полигимния","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461621 59.6910498)'::geometry, 'node', 4912277781, 4, NULL, '{"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613548 59.6910624)'::geometry, 'node', 4912277782, 4, NULL, '{"board_type":"history","information":"board","name":"Эрато","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615016 59.6910712)'::geometry, 'node', 4912277783, 4, NULL, '{"board_type":"history","information":"board","name":"Меркурий","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608954 59.6897746)'::geometry, 'node', 5251698420, 25, NULL, '{"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460198 59.6905729)'::geometry, 'node', 6758903438, 6, NULL, '{"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4625734 59.6908311)'::geometry, 'node', 8331430683, 3, NULL, '{"inlet":"grate","manhole":"drain","man_made":"manhole"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614743 59.690923)'::geometry, 'node', 8530936200, 1, NULL, '{"board_type":"history","information":"board","name":"Аполлон","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4597619 59.6907527)'::geometry, 'node', 9140565043, 1, NULL, '{"ford":"yes"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4606891 59.6906687)'::geometry, 'node', 9140576937, 3, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608515 59.6907117)'::geometry, 'node', 9140576938, 4, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613945 59.6911519)'::geometry, 'node', 9143069530, 5, NULL, '{"drain":"no","source:direction":"survey"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('POINT (30.4615903 59.6911716)'::geometry, 'node', 9143069534, 1, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460339 59.6906064)'::geometry, 'node', 9143093777, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601191 59.6906349)'::geometry, 'node', 9143093778, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610445 59.6908345)'::geometry, 'node', 9143093802, 4, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610243 59.6909861)'::geometry, 'node', 9143093804, 3, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612126 59.691117)'::geometry, 'node', 9143093806, 4, NULL, '{"drain":"no"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460445 59.6910504)'::geometry, 'node', 9656736571, 2, NULL, '{"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4608056 59.6895935, 30.4608954 59.6897746, 30.4609447 59.6898691, 30.4614541 59.6909278)'::geometry, 'way', 30995960, 42, '{9140727117,5251698420,1518870630,1632497615}', '{"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605616 59.6906319, 30.4597619 59.6907527, 30.4596087 59.6907755)'::geometry, 'way', 149099000, 6, '{1621246509,9140565043,1621246531}', '{"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604741 59.6903357, 30.4604598 59.6904575, 30.4604646 59.6905099, 30.4604784 59.6905443, 30.4604933 59.6905665, 30.4605321 59.6905996, 30.4605616 59.6906319)'::geometry, 'way', 149099004, 8, '{1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601177 59.6905796, 30.4600903 59.6905709, 30.4600721 59.6905605, 30.4600579 59.6905458, 30.4600519 59.6905296, 30.4600545 59.6905133, 30.4600656 59.6904979, 30.4600844 59.6904845, 30.4601095 59.690474, 30.4601391 59.6904673, 30.460169 59.6904648, 30.4601991 59.6904661, 30.4602277 59.6904711, 30.4602498 59.6904787, 30.4602686 59.6904892, 30.4602829 59.6905018, 30.4602918 59.6905174, 30.4602917 59.6905327, 30.4602881 59.6905462, 30.4602793 59.6905579)'::geometry, 'way', 149099028, 5, '{9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949}', '{"barrier":"fence","colour":"green","fence_type":"wood","height":"2"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4603352 59.6911039, 30.460353 59.6910638, 30.4603719 59.6910414, 30.4603979 59.691021, 30.4604807 59.6909761, 30.460577 59.6909284, 30.4606406 59.6908886, 30.460669 59.6908562, 30.460673 59.6908234, 30.4606633 59.6907504, 30.4606582 59.6907286, 30.4606491 59.6907025, 30.4606314 59.690668, 30.460609 59.690636, 30.4605858 59.6906064, 30.4605578 59.6905735, 30.4605362 59.6905385, 30.4605214 59.6905022, 30.4605119 59.6904644, 30.4605095 59.6904098, 30.460512 59.6903499, 30.4605096 59.6903011)'::geometry, 'way', 149099029, 36, '{9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684}', '{"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610979 59.6907799, 30.4608515 59.6907117)'::geometry, 'way', 149099034, 9, '{1632503255,9140576938}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4629005 59.6913411, 30.4614541 59.6909278)'::geometry, 'way', 150294524, 8, '{1239612692,1632497615}', '{"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613148 59.6910721, 30.4613667 59.6910818, 30.4614212 59.6910868, 30.4614766 59.6910869, 30.4615311 59.6910822, 30.4615833 59.6910728, 30.4616314 59.691059, 30.461674 59.6910412, 30.4617098 59.6910199, 30.4617378 59.6909958, 30.461757 59.6909696, 30.4617669 59.6909421, 30.4617672 59.6909141, 30.4617579 59.6908866, 30.4617393 59.6908603, 30.4617119 59.690836, 30.4616766 59.6908145, 30.4616343 59.6907964, 30.4615866 59.6907823, 30.4615347 59.6907726, 30.4614802 59.6907676, 30.4614248 59.6907674, 30.4613703 59.6907721, 30.4613181 59.6907815, 30.46127 59.6907954, 30.4612274 59.6908132, 30.4611916 59.6908345, 30.4611636 59.6908586, 30.4611444 59.6908848, 30.4611345 59.6909123, 30.4611342 59.6909402, 30.4611435 59.6909678, 30.4611621 59.6909941, 30.4611895 59.6910184, 30.4612248 59.6910399, 30.461267 59.6910579, 30.4613148 59.6910721)'::geometry, 'way', 150294525, 6, '{1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686}', '{"name":"Дубовое кольцо"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.460726 59.6910052, 30.460614 59.6910145, 30.4605241 59.69102, 30.4604597 59.691022, 30.4603979 59.691021)'::geometry, 'way', 150294532, 30, '{1632497615,1632220252,9140727238,9140727242,9140727239,1621246592}', '{"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605096 59.6903011, 30.4614541 59.6909278)'::geometry, 'way', 150294541, 8, '{1239612684,1632497615}', '{"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4617339 59.6901702)'::geometry, 'way', 150294547, 9, '{1632497615,1518870645}', '{"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461819 59.6910085, 30.4618473 59.6909863, 30.4618928 59.6909647, 30.461951 59.6909401, 30.4620356 59.6909251, 30.462536 59.6908707)'::geometry, 'way', 152440395, 6, '{1652587944,1652587948,1652587950,9143093800,1652587952,1652587953}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613063 59.6907075, 30.4612631 59.6907161, 30.4612041 59.6907321)'::geometry, 'way', 152442436, 10, '{1652605207,9143204222,1632503254}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4617627 59.6907689, 30.4618218 59.6907946, 30.4618794 59.6908253, 30.4619277 59.6908578)'::geometry, 'way', 152442438, 8, '{1652605205,1652605201,1652605200,1652587958}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4612018 59.6909805, 30.4617256 59.6909215, 30.4625734 59.6908311, 30.4628306 59.6908088)'::geometry, 'way', 311975108, 20, '{3188928044,3177639362,8331430683,7911801321}', '{"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611708 59.6911018, 30.4611289 59.6910829, 30.4610793 59.6910531, 30.4610552 59.6910294, 30.4610432 59.6910153, 30.4610243 59.6909861)'::geometry, 'way', 313051687, 8, '{1632503180,9143069533,9143093805,9143069532,1632503185,9143093804}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061)'::geometry, 'way', 426269715, 5, '{4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051}', '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603979 59.691021, 30.4603224 59.6910067, 30.4602382 59.6909843, 30.4601137 59.6909482, 30.4600256 59.6909178, 30.4599203 59.6908773, 30.4597958 59.6908259, 30.4597422 59.6908088, 30.4596966 59.6907997, 30.4596501 59.6907961, 30.4596189 59.6907966, 30.4595885 59.6908005, 30.4595518 59.6908091, 30.4595101 59.6908241)'::geometry, 'way', 438780267, 20, '{1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957}', '{"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4625498 59.6908065, 30.4614541 59.6909278)'::geometry, 'way', 750779153, 4, '{1632220250,1632497615}', '{"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4631938 59.6918756)'::geometry, 'way', 750779155, 5, '{1632497615,1195120146}', '{"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4606491 59.6907025)'::geometry, 'way', 750779156, 5, '{1632497615,1621246419}', '{"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4625914 59.6924527)'::geometry, 'way', 750779157, 4, '{1632497615,1652587960}', '{"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611165 59.6918779, 30.46118 59.6916919, 30.4614541 59.6909278)'::geometry, 'way', 750779158, 4, '{9159459639,1239612686,1632497615}', '{"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4596189 59.6907966, 30.4596712 59.6907865, 30.4597275 59.6907729, 30.459757 59.6907607, 30.4597619 59.6907527, 30.4597677 59.6907431, 30.4597919 59.6907269, 30.4598455 59.6907093, 30.459934 59.6906931, 30.4600118 59.6906782, 30.4600467 59.690666, 30.4600681 59.6906484, 30.4600725 59.6906275, 30.4600655 59.6906044, 30.4600295 59.6905552, 30.4600066 59.6905268, 30.4600031 59.690512, 30.4600111 59.6904995, 30.460044 59.6904799, 30.4600789 59.6904629, 30.4601241 59.6904473)'::geometry, 'way', 988944864, 2, '{9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340}', '{"highway":"path","surface":"ground"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4607784 59.690696, 30.4606891 59.6906687)'::geometry, 'way', 988944880, 3, '{9140576936,9140576937}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601316 59.6905738, 30.4601383 59.6905745, 30.460144 59.6905725, 30.4601453 59.6905691, 30.4601415 59.6905663, 30.4601348 59.6905656, 30.4601291 59.6905676, 30.4601278 59.6905709, 30.4601316 59.6905738)'::geometry, 'way', 989184163, 1, '{9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601637 59.6905695, 30.4601704 59.6905701, 30.4601761 59.6905682, 30.4601774 59.6905648, 30.4601736 59.6905619, 30.4601668 59.6905613, 30.4601612 59.6905632, 30.4601599 59.6905666, 30.4601637 59.6905695)'::geometry, 'way', 989184166, 1, '{9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4615026 59.6911479, 30.4614481 59.6911519, 30.4613945 59.6911519)'::geometry, 'way', 989211851, 4, '{1652605211,9143069529,9143069530}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603719 59.6910414, 30.4597387 59.6911122)'::geometry, 'way', 989211857, 12, '{8650331583,4260007752}', '{"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603446 59.6911727, 30.4603806 59.6910714, 30.4603967 59.691047, 30.4604235 59.6910376, 30.4604664 59.6910348, 30.4605415 59.6910308)'::geometry, 'way', 989211858, 1, '{9143069609,9143069608,9143069607,9143069606,9143069605,9143069604}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613583 59.6906799, 30.4614025 59.6907746, 30.461428 59.6907726, 30.4614548 59.6907726, 30.4614763 59.6907739)'::geometry, 'way', 989211859, 1, '{9143093728,9143093727,9143093726,9143093725,9143093724}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461314 59.6906832, 30.461361 59.6907794, 30.4613301 59.6907854, 30.4613033 59.6907929, 30.4612845 59.690799, 30.4609841 59.6905973)'::geometry, 'way', 989211860, 1, '{9143093729,9143093730,9143093731,9143093732,9143093734,9143093733}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611484 59.6909364, 30.4611471 59.6909174, 30.4611497 59.6909005, 30.4611578 59.6908836, 30.4611645 59.6908714, 30.4611739 59.6908606, 30.4606917 59.6907283, 30.460681 59.6907283, 30.460677 59.6907337, 30.460685 59.6907601, 30.4606891 59.6907817, 30.4606917 59.6908129, 30.4606944 59.6908426, 30.4606837 59.6908656, 30.4606596 59.6908927, 30.4606247 59.6909184, 30.460563 59.6909523, 30.460453 59.6910064)'::geometry, 'way', 989211861, 1, '{9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605335 59.6903364, 30.4605335 59.6903946, 30.4605308 59.6904501, 30.4605348 59.6904813, 30.4605442 59.6905137, 30.4605576 59.6905394, 30.4605818 59.6905773, 30.4606193 59.6906247, 30.4606408 59.6906545, 30.4606596 59.6906856, 30.4606716 59.6906958, 30.4606958 59.6907039, 30.4611947 59.6908433, 30.4612155 59.6908301, 30.4612369 59.6908166, 30.461253 59.6908098, 30.4609492 59.6906112)'::geometry, 'way', 989211862, 1, '{9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604919 59.6903357, 30.4604919 59.690398, 30.4604892 59.6904494, 30.4604946 59.690486, 30.4605053 59.6905157, 30.4605161 59.6905387, 30.4605402 59.6905766, 30.4605778 59.690624, 30.4605992 59.6906538, 30.460626 59.6906931, 30.4606368 59.6907255, 30.4606448 59.6907574, 30.4606502 59.6907871, 30.4606542 59.6908196, 30.4606502 59.6908494, 30.4606327 59.6908751, 30.4606059 59.6908927, 30.4605496 59.6909266, 30.4604128 59.6909942)'::geometry, 'way', 989211863, 1, '{9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619893 59.6908956, 30.4620356 59.6909251)'::geometry, 'way', 989211867, 2, '{1652587955,1652587952}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610753 59.6908007, 30.4610979 59.6907799)'::geometry, 'way', 989211868, 4, '{9143093801,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611491 59.6907553, 30.4610979 59.6907799)'::geometry, 'way', 989211869, 4, '{1632503177,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461012 59.6909572, 30.4610056 59.6909157, 30.4610163 59.6908698, 30.4610445 59.6908345)'::geometry, 'way', 989211870, 4, '{1632503179,9143093803,1632503181,9143093802}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613456 59.6911475, 30.46131 59.6911438, 30.4612696 59.6911343, 30.4612126 59.691117)'::geometry, 'way', 989211871, 4, '{1652605209,9143069531,1632503237,9143093806}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4622826 59.6903796)'::geometry, 'way', 991343632, 2, '{1632497615,1518870652}', '{"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4620021 59.690877, 30.4617551 59.6909043, 30.4617579 59.690914, 30.4617593 59.6909255, 30.4617606 59.6909377)'::geometry, 'way', 991343633, 1, '{9159456550,9159456549,9159456545,9159456544,9159456543}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619941 59.6908547, 30.4617471 59.690882, 30.4617392 59.6908714, 30.4617298 59.6908606, 30.4617164 59.6908491)'::geometry, 'way', 991343634, 1, '{9159456552,9159456551,9159456548,9159456547,9159456546}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4602794 59.6911745, 30.4603083 59.6910871)'::geometry, 'way', 991343661, 1, '{9159459675,9159459674}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4614541 59.6909278)'::geometry, 'way', 1042527594, 11, '{9140727237,1632497615}', '{"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4611342 59.6909402, 30.4611345 59.6909123, 30.4611444 59.6908848, 30.4611636 59.6908586, 30.4611916 59.6908345, 30.4612274 59.6908132, 30.46127 59.6907954, 30.4613181 59.6907815, 30.4613703 59.6907721, 30.4614248 59.6907674, 30.4614802 59.6907676, 30.4615347 59.6907726, 30.4615866 59.6907823, 30.4616343 59.6907964, 30.4616766 59.6908145, 30.4617119 59.690836, 30.4617393 59.6908603, 30.4617579 59.6908866, 30.4617672 59.6909141, 30.4617669 59.6909421, 30.461757 59.6909696, 30.4617378 59.6909958, 30.4617098 59.6910199, 30.461674 59.6910412, 30.4616314 59.691059, 30.4615833 59.6910728, 30.4615311 59.6910822, 30.4614766 59.6910869, 30.4614212 59.6910868, 30.4613667 59.6910818, 30.4613148 59.6910721, 30.461267 59.6910579, 30.4612248 59.6910399, 30.4611895 59.6910184, 30.4611621 59.6909941, 30.4611435 59.6909678, 30.4611342 59.6909402)))'::geometry, 'way', 150294525, 6, NULL, '{"name":"Дубовое кольцо"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034)))'::geometry, 'way', 426269715, 5, NULL, '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601278 59.6905709, 30.4601291 59.6905676, 30.4601348 59.6905656, 30.4601415 59.6905663, 30.4601453 59.6905691, 30.460144 59.6905725, 30.4601383 59.6905745, 30.4601316 59.6905738, 30.4601278 59.6905709)))'::geometry, 'way', 989184163, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); -INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601599 59.6905666, 30.4601612 59.6905632, 30.4601668 59.6905613, 30.4601736 59.6905619, 30.4601774 59.6905648, 30.4601761 59.6905682, 30.4601704 59.6905701, 30.4601637 59.6905695, 30.4601599 59.6905666)))'::geometry, 'way', 989184166, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); - ---Testcase 40: -CREATE FOREIGN TABLE "types_PostGIS"( "i" int OPTIONS (key 'true'), gm geometry, gg geography, r raster, t text, gm1 geometry, gg1 geography) SERVER sqlite_svr; - ---Testcase 41: ERR - raster -INSERT INTO "types_PostGIS" ( "i", gm, gg, r, t ) VALUES (1, decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('1223456890', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); ---Testcase 42: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; ---Testcase 43: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; - --- Insert SpatiaLite BLOB, read PostGOS/GEOS BLOB ---Testcase 44: OK -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (1, decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); ---Testcase 45: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; ---Testcase 46: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; ---Testcase 47: OK -SELECT "i", gm, gg, t FROM "types_PostGIS"; ---Testcase 48: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS"; ---Testcase 49: ERR, no SRID -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); ---Testcase 50: ERR, no SRID -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); ---Testcase 51: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); ---Testcase 52: -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); ---Testcase 53: ERR damaged, but there is SRID -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = (decode('0101000020e6100000bf72ce99fe76', 'hex')::geometry); - --- Insert PostGIS/GEOS BLOB, read SpatiaLite BLOB ---Testcase 54: OK -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (2, decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); ---Testcase 55: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; ---Testcase 56: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; ---Testcase 57: OK -SELECT "i", gm, gg, t FROM "types_PostGIS"; ---Testcase 58: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; ---Testcase 59: -ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; ---Testcase 60: ERR damaged geometry, but there is SRID -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (3, decode('0101000020e6100000bf72ce99fe76', 'hex'), NULL, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); ---Testcase 61: ERR damaged geography, but there is SRID -INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (4, NULL, decode('0101000020e6100000bf72ce99fe76', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); - ---Testcase 62: -CREATE FOREIGN TABLE "♂" ( - id int4 OPTIONS (key 'true'), - "UAI" varchar(254), - "⌖" geometry, - geom geometry, - "t₀" date, - "class" text, - "URL" varchar(80) -) SERVER sqlite_svr; - ---Testcase 63: -INSERT INTO "♂" SELECT * FROM "♂"."テスト"; ---Testcase 64: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE bytea; ---Testcase 65: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE bytea; ---Testcase 66: -SELECT * FROM "♂"; ---Testcase 67: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE geometry; ---Testcase 68: -ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE geometry; ---Testcase 69: -SELECT * FROM "♂"; - ---Testcase 70: -CREATE FOREIGN TABLE "♁ FDW"( - geom geometry NOT NULL, - osm_type varchar(16) OPTIONS (key 'true') NOT NULL , - osm_id bigint OPTIONS (key 'true') NOT NULL, - ver int NOT NULL, - arr text, - t text -) SERVER sqlite_svr OPTIONS (table '♁'); - ---Testcase 71: ERR - No SRID -INSERT INTO "♁ FDW" SELECT * FROM "♁"; ---Testcase 72: OK -SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; ---Testcase 73: -UPDATE "♁" SET geom = ST_SetSRID(geom, 4326); ---Testcase 74: -INSERT INTO "♁ FDW" SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; ---Testcase 75: -ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE bytea; ---Testcase 76: -SELECT * FROM "♁ FDW"; ---Testcase 77: -ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE geometry; ---Testcase 78: -SELECT * FROM "♁ FDW"; - ---Testcase 79: -DROP FOREIGN TABLE "♂"; ---Testcase 80: -DROP FOREIGN TABLE "♁ FDW"; ---Testcase 81: -DROP TABLE "♁"; ---Testcase 82: -DROP TABLE "♂"."テスト"; ---Testcase 83: -DROP SCHEMA "♂"; - --- Test operators implemented in PostGIS 3.4.2, other are not tested --- SELECT testing group --- geometry -> geometry + bytea const -> geography -> geography + bytea const --- TC 100 -> TC 150 -> TC200 -> TC250 --- WHERE testing group --- geometry -> geometry + bytea const -> geography -> geography + bytea const --- TC 300 -> TC 350 -> TC400 -> TC450 - ---Testcase 100: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @@ gm1 g FROM "types_PostGIS"; ---Testcase 101: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm && gm1 g FROM "types_PostGIS"; ---Testcase 102: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm << gm1 g FROM "types_PostGIS"; ---Testcase 103: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm >> gm1 g FROM "types_PostGIS"; ---Testcase 104: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &< gm1 g FROM "types_PostGIS"; ---Testcase 105: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &> gm1 g FROM "types_PostGIS"; ---Testcase 106: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<| gm1 g FROM "types_PostGIS"; ---Testcase 107: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |>> gm1 g FROM "types_PostGIS"; ---Testcase 108: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &<| gm1 g FROM "types_PostGIS"; ---Testcase 109: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |&> gm1 g FROM "types_PostGIS"; ---Testcase 110: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~= gm1 g FROM "types_PostGIS"; ---Testcase 111: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm = gm1 g FROM "types_PostGIS"; ---Testcase 112: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; ---Testcase 113: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; ---Testcase 114: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |=| gm1 g FROM "types_PostGIS"; ---Testcase 115 -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <#> gm1 g FROM "types_PostGIS"; ---Testcase 116: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<->> gm1 g FROM "types_PostGIS"; ---Testcase 117: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @ gm1 g FROM "types_PostGIS"; ---Testcase 118: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~ gm1 g FROM "types_PostGIS"; - ---Testcase 150: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 151: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 152: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 153: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 154: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 155: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 156: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 157: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 158: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 159: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 160: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 161: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 162: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 163: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 164: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 165: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 166: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 167: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 168: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 169: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 170: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - ---Testcase 200: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <-> gg1 g FROM "types_PostGIS"; ---Testcase 201: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg && gg1 g FROM "types_PostGIS"; ---Testcase 202: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <> gg1 g FROM "types_PostGIS"; ---Testcase 203: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg = gg1 g FROM "types_PostGIS"; ---Testcase 204 -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg != gg1 g FROM "types_PostGIS"; - ---Testcase 250: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 251: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 252: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; ---Testcase 253: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT "i", gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; - ---Testcase 300: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ gm1 IS NOT NULL; ---Testcase 301: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && gm1 IS NOT NULL; ---Testcase 302: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << gm1 IS NOT NULL; ---Testcase 303: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> gm1 IS NOT NULL; ---Testcase 304: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< gm1 IS NOT NULL; ---Testcase 305: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> gm1 IS NOT NULL; ---Testcase 306: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| gm1 IS NOT NULL; ---Testcase 307: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> gm1 IS NOT NULL; ---Testcase 308: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| gm1 IS NOT NULL; ---Testcase 309: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> gm1 IS NOT NULL; ---Testcase 310: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= gm1 IS NOT NULL; ---Testcase 311: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm = gm1 IS NOT NULL; ---Testcase 312: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& gm1 IS NOT NULL; ---Testcase 313: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| gm1 IS NOT NULL; ---Testcase 314: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> gm1 IS NOT NULL; ---Testcase 315: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> gm1 IS NOT NULL; ---Testcase 316: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ gm1 IS NOT NULL; ---Testcase 317: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ gm1 IS NOT NULL; - ---Testcase 350: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 351: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 352: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 353: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 354: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 355: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 356: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 357: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 358: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 359: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 360: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 361: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 362: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 363: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 364: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 365: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 366: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 367: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 368: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 369: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 370: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - - ---Testcase 400: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> gg1 IS NOT NULL; ---Testcase 401: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && gg1 IS NOT NULL; ---Testcase 402: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; ---Testcase 403: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; ---Testcase 404: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg = gg1 IS NOT NULL; ---Testcase 405: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != gg1 IS NOT NULL; - ---Testcase 450: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 451: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 452: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 453: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; ---Testcase 454: -EXPLAIN (VERBOSE, COSTS OFF) -SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; - - ---Testcase 500: -DROP FOREIGN TABLE "types_PostGIS"; ---Testcase 501: -DROP EXTENSION sqlite_fdw CASCADE; ---Testcase 502: -DROP EXTENSION postgis CASCADE; diff --git a/sql/17.0/types/uuid.sql b/sql/17.0/types/uuid.sql index 01f5ff69..149ef8f1 100644 --- a/sql/17.0/types/uuid.sql +++ b/sql/17.0/types/uuid.sql @@ -6,9 +6,6 @@ CREATE EXTENSION sqlite_fdw; CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); ---Testcase 003: -CREATE SERVER sqlite2 FOREIGN DATA WRAPPER sqlite_fdw; - --Testcase 009: CREATE FOREIGN TABLE "type_UUID"( "i" int OPTIONS (key 'true'), "u" uuid) SERVER sqlite_svr OPTIONS (table 'type_UUID'); --Testcase 010: diff --git a/sql/17.0/with_gis_support/auto_import.sql b/sql/17.0/with_gis_support/auto_import.sql new file mode 100644 index 00000000..22df5ceb --- /dev/null +++ b/sql/17.0/with_gis_support/auto_import.sql @@ -0,0 +1,49 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/with_gis_support/postgis.sql b/sql/17.0/with_gis_support/postgis.sql new file mode 100644 index 00000000..457d54f0 --- /dev/null +++ b/sql/17.0/with_gis_support/postgis.sql @@ -0,0 +1,602 @@ +--Testcase 2: +CREATE EXTENSION sqlite_fdw; +--Testcase 3: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 4: +CREATE EXTENSION IF NOT EXISTS postgis; +--Testcase 5: +CREATE EXTENSION postgis_raster; +--Testcase 6: +CREATE EXTENSION postgis_topology; + +-- TEST GIS DATA FROM UNION ASTRONOMIQUE INTERNATIONAL (国際天文学連合): MARS, Olympus mons +--Testcase 11: +CREATE SCHEMA "♂"; +--Testcase 12: +CREATE TABLE "♂"."テスト" ( + id int4 NULL, + "UAI" varchar(254) NULL, + "⌖" public.geometry(point, 104904) NULL, + geom public.geometry(geometry, 104904) NULL, + "t₀" date NULL, + "class" text NULL, + "URL" varchar(80) NULL +); +--Testcase 13: ETC... +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(991, 'Olympus Mons', 'SRID=104904;POINT (226.19749330952843 18.652758890345698)'::geometry, 'SRID=104904;MULTIPOLYGON (((223.78717231750488 23.3314151763916, 224.22803688049316 23.324007034301758, 224.32436180114746 23.5648136138916, 224.7186985015869 23.593564987182617, 224.79486274719238 23.45737648010254, 225.06530570983887 23.238798141479492, 225.67255210876465 23.437196731567383, 226.2211856842041 23.6611385345459, 226.5472011566162 23.65372657775879, 227.6215763092041 23.435148239135742, 228.19009590148926 23.390283584594727, 228.753023147583 23.24955177307129, 228.90711784362793 23.1943416595459, 229.23219108581543 23.004926681518555, 229.5288143157959 22.75514030456543, 229.87227058410645 22.442903518676758, 230.2469539642334 22.14628028869629, 230.7309169769287 21.927717208862305, 231.30854988098145 21.64670753479004, 231.85495948791504 21.084684371948242, 232.19841957092285 19.88258171081543, 231.88618278503418 18.47752571105957, 231.30854988098145 17.743772506713867, 231.21887397766113 17.218599319458008, 231.17812156677246 16.751802444458008, 230.97346687316895 16.353670120239258, 230.8327350616455 15.947111129760742, 230.62945365905762 15.478002548217773, 230.4574489593506 15.352907180786133, 230.20748329162598 15.29954719543457, 229.99631309509277 15.036508560180664, 229.72586631774902 14.640104293823242, 229.41096305847168 14.377065658569336, 228.98862266540527 14.10291862487793, 228.74040412902832 13.854700088500977, 228.5107135772705 13.83247184753418, 228.31806755065918 13.962137222290039, 227.93990516662598 13.929948806762695, 227.36133766174316 13.883039474487305, 227.04734230041504 13.813947677612305, 226.68895149230957 13.851762771606445, 226.4101276397705 13.839879989624023, 226.06347465515137 13.632848739624023, 225.7766170501709 13.617597579956055, 225.32925987243652 13.481771469116211, 224.76723670959473 13.591054916381836, 224.15838050842285 13.731557846069336, 223.12800407409668 14.106241226196289, 222.39425468444824 14.402864456176758, 221.67611503601074 14.918050765991211, 221.434663772583 15.403280258178711, 221.30129432678223 16.051607131958008, 221.0864200592041 16.410966873168945, 221.09012413024902 16.6591854095459, 221.1975612640381 17.09263801574707, 220.9971103668213 17.32316017150879, 220.75670051574707 17.422361373901367, 220.82338523864746 17.844701766967773, 221.18475532531738 18.073732376098633, 221.3567600250244 18.5584774017334, 221.40367317199707 19.10576820373535, 221.3567600250244 19.90325355529785, 221.42725563049316 20.59361457824707, 221.778959274292 21.40439796447754, 222.34188652038574 22.201879501342773, 223.01658821105957 23.272138595581055, 223.3759479522705 23.668546676635742, 223.3722438812256 23.675954818725586, 223.57600212097168 23.675954818725586, 223.70566749572754 23.542585372924805, 223.78717231750488 23.3314151763916)))'::geometry, '1973-01-01', 'mo', 'http://planetarynames.wr.usgs.gov/Feature/4453'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(248, 'Karzok', 'SRID=104904;POINT (228.262902951161 18.4035270924109)'::geometry, 'SRID=104904;MULTIPOLYGON (((228.269330978394 18.2748584747314, 228.266962051392 18.2748394012451, 228.264589309692 18.2748584747314, 228.26222038269 18.2749156951904, 228.259851455688 18.2750148773193, 228.257482528687 18.2751522064209, 228.255121231079 18.2753276824951, 228.252759933472 18.2755451202393, 228.250402450562 18.2757968902588, 228.248052597046 18.2760906219482, 228.245706558228 18.2764263153076, 228.243368148804 18.2767963409424, 228.241037368774 18.2772083282471, 228.23871421814 18.2776546478271, 228.236398696899 18.2781429290771, 228.234094619751 18.2786655426025, 228.231798171997 18.2792301177979, 228.229513168335 18.2798328399658, 228.227239608765 18.2804698944092, 228.224977493286 18.2811489105225, 228.222726821899 18.2818622589111, 228.220491409302 18.2826137542725, 228.218271255493 18.2833995819092, 228.216066360474 18.2842235565186, 228.213872909546 18.2850856781006, 228.211698532104 18.285982131958, 228.209539413452 18.2869167327881, 228.207399368286 18.2878856658936, 228.205278396606 18.2888889312744, 228.203172683716 18.2899265289307, 228.201089859009 18.2910022735596, 228.199026107788 18.2921085357666, 228.196981430054 18.2932529449463, 228.194959640503 18.2944278717041, 228.192956924438 18.2956371307373, 228.190980911255 18.2968769073486, 228.189023971558 18.2981548309326, 228.187093734741 18.2994594573975, 228.185186386108 18.3007984161377, 228.183305740356 18.3021678924561, 228.181447982788 18.3035678863525, 228.179616928101 18.3050022125244, 228.177812576294 18.3064632415771, 228.176038742065 18.307954788208, 228.174287796021 18.3094730377197, 228.172567367554 18.3110218048096, 228.170873641968 18.3126010894775, 228.16921043396 18.3142032623291, 228.16757774353 18.3158359527588, 228.165975570679 18.3174953460693, 228.164403915405 18.3191814422607, 228.162858963013 18.320894241333, 228.161352157593 18.3226299285889, 228.159872055054 18.3243923187256, 228.158430099487 18.3261775970459, 228.157014846802 18.3279857635498, 228.155637741089 18.3298168182373, 228.154294967651 18.3316707611084, 228.152982711792 18.3335475921631, 228.151708602905 18.3354473114014, 228.150468826294 18.337366104126, 228.149263381958 18.3393039703369, 228.148092269897 18.3412647247314, 228.14695930481 18.343240737915, 228.145864486694 18.3452396392822, 228.144804000854 18.3472537994385, 228.143781661987 18.3492832183838, 228.142793655396 18.3513317108154, 228.141847610474 18.3533954620361, 228.140939712524 18.3554744720459, 228.140066146851 18.3575687408447, 228.139234542847 18.3596782684326, 228.138441085815 18.3617992401123, 228.137685775757 18.3639354705811, 228.136972427368 18.3660831451416, 228.136297225952 18.3682422637939, 228.135660171509 18.3704090118408, 228.135065078735 18.3725872039795, 228.134511947632 18.37477684021, 228.133996963501 18.376974105835, 228.133520126343 18.3791828155518, 228.133085250854 18.3813953399658, 228.132692337036 18.3836154937744, 228.132341384888 18.3858432769775, 228.132028579712 18.3880748748779, 228.131757736206 18.3903102874756, 228.13152885437 18.3925533294678, 228.131341934204 18.39479637146, 228.131196975708 18.3970432281494, 228.131090164185 18.3992938995361, 228.131025314331 18.4015445709229, 228.131002426147 18.4037952423096, 228.131021499634 18.4060459136963, 228.13108253479 18.408296585083, 228.131185531616 18.4105472564697, 228.131326675415 18.4127941131592, 228.131513595581 18.4150371551514, 228.13173866272 18.4172801971436, 228.132005691528 18.4195156097412, 228.132314682007 18.4217510223389, 228.132661819458 18.4239749908447, 228.133054733276 18.4261989593506, 228.13348197937 18.4284114837646, 228.133955001831 18.4306163787842, 228.134466171265 18.4328174591064, 228.135019302368 18.4350070953369, 228.135610580444 18.4371852874756, 228.13624382019 18.4393558502197, 228.136919021606 18.4415149688721, 228.137628555298 18.4436626434326, 228.138380050659 18.4457988739014, 228.13917350769 18.4479236602783, 228.140001296997 18.4500331878662, 228.140871047974 18.452127456665, 228.141775131226 18.4542064666748, 228.142721176147 18.4562740325928, 228.143705368042 18.4583225250244, 228.144723892212 18.460355758667, 228.145784378052 18.4623699188232, 228.146879196167 18.4643688201904, 228.148008346558 18.4663486480713, 228.149175643921 18.4683094024658, 228.150381088257 18.4702472686768, 228.151620864868 18.4721698760986, 228.152894973755 18.4740695953369, 228.154203414917 18.4759464263916, 228.155546188354 18.47780418396, 228.156923294067 18.4796352386475, 228.158334732056 18.4814472198486, 228.159776687622 18.4832363128662, 228.161256790161 18.4849987030029, 228.162763595581 18.4867343902588, 228.164304733276 18.4884471893311, 228.16587638855 18.4901371002197, 228.167478561401 18.4917964935303, 228.169115066528 18.49342918396, 228.170778274536 18.4950351715088, 228.172468185425 18.4966144561768, 228.174192428589 18.4981670379639, 228.175939559937 18.4996891021729, 228.177717208862 18.5011806488037, 228.179521560669 18.5026454925537, 228.181352615356 18.5040760040283, 228.183210372925 18.5054798126221, 228.185094833374 18.5068492889404, 228.187002182007 18.5081920623779, 228.188936233521 18.50950050354, 228.190893173218 18.5107746124268, 228.192869186401 18.5120182037354, 228.194871902466 18.5132274627686, 228.196897506714 18.5144062042236, 228.198942184448 18.5155506134033, 228.201009750366 18.5166568756104, 228.203096389771 18.5177326202393, 228.205202102661 18.5187740325928, 228.207326889038 18.5197811126709, 228.209466934204 18.5207500457764, 228.211629867554 18.5216846466064, 228.213804244995 18.5225811004639, 228.21600151062 18.5234432220459, 228.218210220337 18.5242710113525, 228.220434188843 18.5250568389893, 228.22266960144 18.5258121490479, 228.224924087524 18.5265254974365, 228.227186203003 18.5272045135498, 228.229463577271 18.5278415679932, 228.23175239563 18.5284442901611, 228.234052658081 18.5290088653564, 228.236360549927 18.5295352935791, 228.238679885864 18.5300235748291, 228.241006851196 18.5304698944092, 228.243341445923 18.5308818817139, 228.245683670044 18.5312557220459, 228.248029708862 18.531587600708, 228.250383377075 18.5318813323975, 228.252744674683 18.5321369171143, 228.255109786987 18.5323505401611, 228.257474899292 18.5325298309326, 228.259847640991 18.5326671600342, 228.262216567993 18.5327663421631, 228.26459312439 18.5328235626221, 228.266965866089 18.5328426361084, 228.269342422485 18.5328235626221, 228.271715164185 18.5327625274658, 228.274087905884 18.5326671600342, 228.276456832886 18.5325298309326, 228.278825759888 18.5323505401611, 228.281187057495 18.5321369171143, 228.283548355103 18.5318813323975, 228.285902023315 18.531587600708, 228.288251876831 18.5312519073486, 228.290594100952 18.5308818817139, 228.292928695679 18.5304698944092, 228.295255661011 18.5300197601318, 228.297574996948 18.5295352935791, 228.299882888794 18.5290088653564, 228.302179336548 18.5284442901611, 228.304468154907 18.5278415679932, 228.306745529175 18.5272006988525, 228.309011459351 18.5265254974365, 228.311262130737 18.5258083343506, 228.313501358032 18.5250568389893, 228.315725326538 18.5242671966553, 228.317934036255 18.5234432220459, 228.320127487183 18.5225811004639, 228.322305679321 18.5216808319092, 228.324464797974 18.5207462310791, 228.326608657837 18.5197772979736, 228.328733444214 18.5187702178955, 228.330839157104 18.5177326202393, 228.332925796509 18.5166568756104, 228.334989547729 18.5155467987061, 228.337034225464 18.5144023895264, 228.339059829712 18.5132274627686, 228.341062545776 18.5120143890381, 228.343042373657 18.5107707977295, 228.344995498657 18.5094966888428, 228.346929550171 18.5081882476807, 228.348836898804 18.5068454742432, 228.350721359253 18.5054759979248, 228.352579116821 18.5040721893311, 228.354410171509 18.5026416778564, 228.356214523315 18.5011768341064, 228.357992172241 18.4996852874756, 228.359739303589 18.4981632232666, 228.361463546753 18.4966106414795, 228.363153457642 18.4950313568115, 228.364816665649 18.4934253692627, 228.366449356079 18.491792678833, 228.368055343628 18.4901294708252, 228.369626998901 18.4884433746338, 228.371168136597 18.4867305755615, 228.372674942017 18.4849910736084, 228.374151229858 18.4832286834717, 228.375597000122 18.4814434051514, 228.37700843811 18.4796314239502, 228.378385543823 18.4778003692627, 228.379728317261 18.4759426116943, 228.381036758423 18.4740619659424, 228.38231086731 18.4721660614014, 228.383550643921 18.4702434539795, 228.38475227356 18.4683017730713, 228.385919570923 18.4663410186768, 228.387052536011 18.4643650054932, 228.388147354126 18.462366104126, 228.389204025269 18.4603481292725, 228.390226364136 18.4583187103271, 228.391206741333 18.4562664031982, 228.392152786255 18.4542026519775, 228.393060684204 18.4521198272705, 228.393926620483 18.4500255584717, 228.394758224487 18.4479160308838, 228.395547866821 18.4457950592041, 228.396299362183 18.4436588287354, 228.397012710571 18.4415111541748, 228.39768409729 18.4393520355225, 228.398317337036 18.4371814727783, 228.398908615112 18.4349994659424, 228.399461746216 18.4328098297119, 228.399972915649 18.4306125640869, 228.40044593811 18.4284076690674, 228.400876998901 18.4261913299561, 228.401266098022 18.4239711761475, 228.401613235474 18.4217433929443, 228.401922225952 18.4195117950439, 228.402189254761 18.417272567749, 228.402414321899 18.4150333404541, 228.402597427368 18.4127864837646, 228.402742385864 18.4105396270752, 228.40284538269 18.4082927703857, 228.402902603149 18.406042098999, 228.402921676636 18.403787612915, 228.402898788452 18.4015369415283, 228.402837753296 18.3992862701416, 228.402730941772 18.3970394134521, 228.402585983276 18.3947887420654, 228.402395248413 18.3925457000732, 228.402166366577 18.3903064727783, 228.401895523071 18.3880672454834, 228.401586532593 18.385835647583, 228.401231765747 18.3836116790771, 228.400838851929 18.3813877105713, 228.40040397644 18.3791751861572, 228.399930953979 18.3769702911377, 228.399415969849 18.3747730255127, 228.398859024048 18.3725833892822, 228.398263931274 18.3704051971436, 228.397626876831 18.3682346343994, 228.396951675415 18.3660755157471, 228.396238327026 18.3639316558838, 228.395483016968 18.361795425415, 228.394689559937 18.3596744537354, 228.393857955933 18.3575649261475, 228.392988204956 18.3554706573486, 228.39207649231 18.3533916473389, 228.391130447388 18.3513278961182, 228.390146255493 18.3492794036865, 228.389120101929 18.3472461700439, 228.388063430786 18.3452320098877, 228.386964797974 18.3432369232178, 228.385831832886 18.3412609100342, 228.384660720825 18.3393001556396, 228.383455276489 18.3373622894287, 228.382215499878 18.3354434967041, 228.380941390991 18.3335437774658, 228.379629135132 18.3316669464111, 228.378286361694 18.32981300354, 228.376905441284 18.3279819488525, 228.375494003296 18.3261699676514, 228.374048233032 18.3243846893311, 228.37257194519 18.3226261138916, 228.371061325073 18.3208866119385, 228.369520187378 18.3191776275635, 228.367948532104 18.3174915313721, 228.366346359253 18.3158321380615, 228.364709854126 18.3141994476318, 228.363046646118 18.3125972747803, 228.361356735229 18.3110179901123, 228.359636306763 18.3094692230225, 228.357885360718 18.3079509735107, 228.356107711792 18.3064594268799, 228.354303359985 18.3049983978271, 228.352472305298 18.3035640716553, 228.350618362427 18.3021640777588, 228.348733901978 18.3007946014404, 228.346826553345 18.2994556427002, 228.344896316528 18.2981510162354, 228.342943191528 18.2968769073486, 228.340963363647 18.29563331604, 228.33896446228 18.2944240570068, 228.336938858032 18.293249130249, 228.334897994995 18.2921085357666, 228.332830429077 18.2909984588623, 228.33074760437 18.2899265289307, 228.328645706177 18.2888851165771, 228.3265209198 18.2878818511963, 228.324380874634 18.2869129180908, 228.322221755981 18.285982131958, 228.32004737854 18.2850856781006, 228.31785774231 18.2842235565186, 228.315649032593 18.2833995819092, 228.313428878784 18.2826099395752, 228.311193466187 18.2818584442139, 228.3089427948 18.2811450958252, 228.306684494019 18.2804698944092, 228.304410934448 18.2798290252686, 228.302125930786 18.2792301177979, 228.299829483032 18.2786655426025, 228.297521591187 18.2781391143799, 228.295206069946 18.2776546478271, 228.292882919312 18.2772045135498, 228.290552139282 18.2767963409424, 228.288213729858 18.2764225006104, 228.28586769104 18.2760906219482, 228.283517837524 18.2757968902588, 228.281160354614 18.2755451202393, 228.278802871704 18.2753276824951, 228.276437759399 18.2751522064209, 228.274072647095 18.2750148773193, 228.271703720093 18.2749156951904, 228.269330978394 18.2748584747314)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14144'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(249, 'Pangboche', 'SRID=104904;POINT (226.595873773026 17.2783598670807)'::geometry, 'SRID=104904;MULTIPOLYGON (((226.601442337036 17.1929302215576, 226.599878311157 17.1929187774658, 226.598310470581 17.1929302215576, 226.596746444702 17.1929721832275, 226.595178604126 17.1930370330811, 226.593618392944 17.1931285858154, 226.592054367065 17.1932430267334, 226.590497970581 17.1933879852295, 226.588941574097 17.1935558319092, 226.587385177612 17.193754196167, 226.585836410522 17.1939754486084, 226.58429145813 17.1942195892334, 226.582754135132 17.1944942474365, 226.581216812134 17.1947917938232, 226.57968711853 17.1951160430908, 226.578165054321 17.195463180542, 226.576650619507 17.195837020874, 226.57513999939 17.1962375640869, 226.573637008667 17.1966648101807, 226.572145462036 17.197114944458, 226.570657730103 17.1975879669189, 226.569181442261 17.1980876922607, 226.567712783813 17.1986103057861, 226.566255569458 17.1991596221924, 226.564809799194 17.1997318267822, 226.563371658325 17.2003269195557, 226.561948776245 17.20094871521, 226.56053352356 17.2015933990479, 226.559129714966 17.2022609710693, 226.557741165161 17.2029514312744, 226.556364059448 17.2036647796631, 226.555002212524 17.2044010162354, 226.553651809692 17.2051601409912, 226.552316665649 17.2059421539307, 226.550992965698 17.2067432403564, 226.549688339233 17.2075710296631, 226.54839515686 17.2084178924561, 226.547121047974 17.2092876434326, 226.545862197876 17.2101764678955, 226.544618606567 17.211088180542, 226.543394088745 17.2120189666748, 226.542184829712 17.2129688262939, 226.540990829468 17.2139415740967, 226.539819717407 17.2149333953857, 226.538663864136 17.2159404754639, 226.537527084351 17.2169704437256, 226.536409378052 17.2180194854736, 226.535310745239 17.219087600708, 226.534231185913 17.2201709747314, 226.533174514771 17.2212734222412, 226.532133102417 17.2223949432373, 226.531118392944 17.2235317230225, 226.530118942261 17.2246875762939, 226.529146194458 17.2258586883545, 226.528188705444 17.2270450592041, 226.527257919312 17.2282466888428, 226.526346206665 17.2294635772705, 226.525461196899 17.2306995391846, 226.52459526062 17.2319469451904, 226.523752212524 17.2332057952881, 226.522932052612 17.2344837188721, 226.522138595581 17.2357730865479, 226.521364212036 17.2370738983154, 226.520616531372 17.2383899688721, 226.519891738892 17.2397136688232, 226.519193649292 17.2410526275635, 226.518518447876 17.2424030303955, 226.517869949341 17.2437648773193, 226.517244338989 17.245138168335, 226.516641616821 17.2465190887451, 226.516069412231 17.2479114532471, 226.515520095825 17.2493152618408, 226.514993667603 17.2507228851318, 226.514497756958 17.2521419525146, 226.514024734497 17.253568649292, 226.513578414917 17.2550029754639, 226.513158798218 17.2564449310303, 226.512765884399 17.2578945159912, 226.512399673462 17.2593479156494, 226.512060165405 17.2608089447021, 226.511747360229 17.2622776031494, 226.511461257935 17.2637462615967, 226.511201858521 17.2652225494385, 226.510969161987 17.2667026519775, 226.510766983032 17.2681865692139, 226.510587692261 17.2696743011475, 226.51043510437 17.2711620330811, 226.510313034058 17.2726535797119, 226.510217666626 17.27414894104, 226.510149002075 17.2756404876709, 226.510107040405 17.277135848999, 226.510091781616 17.2786350250244, 226.510103225708 17.2801303863525, 226.510145187378 17.2816257476807, 226.510213851929 17.2831211090088, 226.510305404663 17.2846164703369, 226.510431289673 17.2861080169678, 226.510580062866 17.2875957489014, 226.51075553894 17.289083480835, 226.510957717896 17.2905673980713, 226.511190414429 17.2920475006104, 226.511449813843 17.2935237884521, 226.51173210144 17.2949924468994, 226.512044906616 17.2964611053467, 226.512384414673 17.2979221343994, 226.51275062561 17.2993755340576, 226.513139724731 17.3008251190186, 226.513559341431 17.302267074585, 226.514001846313 17.3037014007568, 226.514474868774 17.3051280975342, 226.514970779419 17.306547164917, 226.515493392944 17.3079586029053, 226.516042709351 17.309362411499, 226.51661491394 17.310754776001, 226.517213821411 17.3121356964111, 226.517839431763 17.3135089874268, 226.518487930298 17.3148708343506, 226.519163131714 17.3162212371826, 226.519861221313 17.3175601959229, 226.520586013794 17.3188877105713, 226.521333694458 17.3202037811279, 226.522104263306 17.3215045928955, 226.522897720337 17.3227939605713, 226.523717880249 17.3240718841553, 226.524557113647 17.3253345489502, 226.525423049927 17.3265819549561, 226.52631187439 17.3278141021729, 226.527219772339 17.3290348052979, 226.528150558472 17.3302364349365, 226.529108047485 17.3314228057861, 226.530080795288 17.3325939178467, 226.531076431274 17.3337497711182, 226.532094955444 17.3348903656006, 226.533132553101 17.3360080718994, 226.53419303894 17.3371143341064, 226.535272598267 17.3381977081299, 226.536371231079 17.3392658233643, 226.537488937378 17.3403148651123, 226.538625717163 17.341344833374, 226.539781570435 17.3423557281494, 226.540952682495 17.3433475494385, 226.542146682739 17.3443202972412, 226.543355941772 17.3452739715576, 226.544580459595 17.3462047576904, 226.545824050903 17.3471164703369, 226.547082901001 17.3480052947998, 226.548360824585 17.3488750457764, 226.549654006958 17.3497219085693, 226.550958633423 17.350549697876, 226.552282333374 17.351354598999, 226.553617477417 17.3521366119385, 226.554967880249 17.3528957366943, 226.55633354187 17.3536319732666, 226.557710647583 17.3543453216553, 226.559099197388 17.3550395965576, 226.560503005981 17.3557071685791, 226.561918258667 17.356351852417, 226.563344955444 17.356969833374, 226.564783096313 17.3575687408447, 226.566232681274 17.3581409454346, 226.56768989563 17.3586902618408, 226.569158554077 17.3592128753662, 226.570634841919 17.359712600708, 226.572122573853 17.3601894378662, 226.573617935181 17.3606395721436, 226.575120925903 17.36106300354, 226.576631546021 17.3614635467529, 226.578149795532 17.361837387085, 226.579675674438 17.3621883392334, 226.581205368042 17.362512588501, 226.58274269104 17.3628101348877, 226.584283828735 17.3630847930908, 226.585828781128 17.3633289337158, 226.587377548218 17.3635501861572, 226.588933944702 17.363748550415, 226.590490341187 17.3639163970947, 226.592050552368 17.3640613555908, 226.593614578247 17.3641757965088, 226.595178604126 17.3642673492432, 226.596746444702 17.3643321990967, 226.598314285278 17.3643741607666, 226.599882125854 17.3643856048584, 226.601449966431 17.3643741607666, 226.603017807007 17.3643321990967, 226.604581832886 17.3642673492432, 226.606145858765 17.3641757965088, 226.607709884644 17.3640613555908, 226.609270095825 17.3639163970947, 226.610830307007 17.3637447357178, 226.612382888794 17.3635501861572, 226.613931655884 17.3633289337158, 226.615480422974 17.3630809783936, 226.617021560669 17.3628101348877, 226.618558883667 17.362512588501, 226.620088577271 17.3621883392334, 226.621610641479 17.361837387085, 226.623128890991 17.3614635467529, 226.624639511108 17.36106300354, 226.626142501831 17.3606395721436, 226.627637863159 17.3601856231689, 226.629125595093 17.359712600708, 226.630601882935 17.3592128753662, 226.632070541382 17.3586902618408, 226.633531570435 17.3581409454346, 226.634977340698 17.3575687408447, 226.636415481567 17.356969833374, 226.637842178345 17.3563480377197, 226.63925743103 17.3557033538818, 226.640661239624 17.3550357818604, 226.642049789429 17.3543453216553, 226.643426895142 17.3536319732666, 226.644792556763 17.3528957366943, 226.646142959595 17.3521327972412, 226.647478103638 17.3513507843018, 226.648801803589 17.3505458831787, 226.650110244751 17.3497219085693, 226.651399612427 17.3488750457764, 226.652677536011 17.3480052947998, 226.653936386108 17.3471126556396, 226.655179977417 17.3462009429932, 226.656408309937 17.3452701568604, 226.65761756897 17.3443202972412, 226.658807754517 17.3433475494385, 226.659982681274 17.3423557281494, 226.661138534546 17.341344833374, 226.662275314331 17.3403148651123, 226.66339302063 17.3392658233643, 226.664487838745 17.3381977081299, 226.665567398071 17.3371105194092, 226.666627883911 17.3360080718994, 226.667665481567 17.3348865509033, 226.668684005737 17.3337459564209, 226.669679641724 17.3325939178467, 226.670656204224 17.3314228057861, 226.67160987854 17.3302326202393, 226.672540664673 17.3290309906006, 226.673448562622 17.3278141021729, 226.674337387085 17.3265781402588, 226.675203323364 17.3253307342529, 226.676042556763 17.324068069458, 226.676862716675 17.3227939605713, 226.677656173706 17.3215007781982, 226.678426742554 17.3201999664307, 226.679174423218 17.318883895874, 226.679899215698 17.3175563812256, 226.680597305298 17.3162174224854, 226.681272506714 17.3148670196533, 226.681921005249 17.3135051727295, 226.682546615601 17.3121318817139, 226.683145523071 17.3107509613037, 226.683717727661 17.3093585968018, 226.684267044067 17.307954788208, 226.684789657593 17.3065433502197, 226.685285568237 17.3051242828369, 226.685754776001 17.3036975860596, 226.686201095581 17.3022632598877, 226.686616897583 17.3008213043213, 226.687009811401 17.2993717193604, 226.687376022339 17.2979183197021, 226.687715530396 17.2964572906494, 226.688024520874 17.2949886322021, 226.688310623169 17.2935199737549, 226.688570022583 17.2920436859131, 226.688798904419 17.290563583374, 226.689004898071 17.2890796661377, 226.689180374146 17.2875919342041, 226.689329147339 17.2861042022705, 226.689451217651 17.2846126556396, 226.689546585083 17.2831172943115, 226.689615249634 17.2816219329834, 226.689653396606 17.2801265716553, 226.689668655396 17.2786312103271, 226.689653396606 17.277135848999, 226.689611434937 17.2756366729736, 226.689542770386 17.2741451263428, 226.689443588257 17.2726497650146, 226.689321517944 17.2711582183838, 226.689168930054 17.2696704864502, 226.688993453979 17.2681827545166, 226.688787460327 17.2666988372803, 226.688554763794 17.2652187347412, 226.68829536438 17.2637424468994, 226.688009262085 17.2622737884521, 226.687696456909 17.2608051300049, 226.687356948853 17.2593441009521, 226.686990737915 17.2578907012939, 226.686597824097 17.256441116333, 226.686178207397 17.2549991607666, 226.685731887817 17.2535648345947, 226.685258865356 17.2521381378174, 226.684762954712 17.2507190704346, 226.684236526489 17.2493114471436, 226.683687210083 17.2479076385498, 226.683115005493 17.2465152740479, 226.682512283325 17.2451343536377, 226.681886672974 17.2437610626221, 226.681238174438 17.2424030303955, 226.680562973022 17.2410526275635, 226.679864883423 17.2397136688232, 226.679140090942 17.2383861541748, 226.678392410278 17.2370700836182, 226.677618026733 17.2357692718506, 226.676824569702 17.2344799041748, 226.67600440979 17.2332057952881, 226.675161361694 17.2319431304932, 226.674295425415 17.2306957244873, 226.673410415649 17.2294635772705, 226.672498703003 17.2282428741455, 226.671564102173 17.2270412445068, 226.670610427856 17.2258548736572, 226.669637680054 17.2246837615967, 226.66863822937 17.2235317230225, 226.6676197052 17.22239112854, 226.666582107544 17.2212734222412, 226.665525436401 17.2201709747314, 226.664445877075 17.2190837860107, 226.663347244263 17.2180194854736, 226.662229537964 17.2169704437256, 226.661092758179 17.2159404754639, 226.659936904907 17.2149295806885, 226.658761978149 17.2139377593994, 226.657571792603 17.2129650115967, 226.656362533569 17.2120151519775, 226.655138015747 17.2110843658447, 226.653894424438 17.2101726531982, 226.652635574341 17.2092838287354, 226.651357650757 17.2084140777588, 226.650068283081 17.2075672149658, 226.648759841919 17.2067432403564, 226.647439956665 17.2059383392334, 226.646104812622 17.2051563262939, 226.64475440979 17.2043972015381, 226.643388748169 17.2036609649658, 226.642011642456 17.2029476165771, 226.640623092651 17.2022571563721, 226.639223098755 17.2015895843506, 226.637807846069 17.2009449005127, 226.636381149292 17.2003269195557, 226.63494682312 17.1997318267822, 226.633497238159 17.1991558074951, 226.632040023804 17.1986103057861, 226.630575180054 17.1980838775635, 226.629095077515 17.1975879669189, 226.627611160278 17.1971111297607, 226.62611579895 17.1966609954834, 226.624616622925 17.1962375640869, 226.623106002808 17.195837020874, 226.621587753296 17.195463180542, 226.620065689087 17.1951160430908, 226.618535995483 17.1947917938232, 226.617002487183 17.1944942474365, 226.615461349487 17.1942195892334, 226.613916397095 17.1939716339111, 226.612367630005 17.1937503814697, 226.610815048218 17.1935558319092, 226.609258651733 17.1933879852295, 226.607698440552 17.1932430267334, 226.60613822937 17.1931285858154, 226.604574203491 17.1930370330811, 226.603010177612 17.1929721832275, 226.601442337036 17.1929302215576)))'::geometry, '2006-01-01', 'aa', 'http://planetarynames.wr.usgs.gov/Feature/14145'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(301, 'Nix Olympica', 'SRID=104904;POINT (230 19.7835659606)'::geometry, NULL, '1958-01-01', 'al', 'http://planetarynames.wr.usgs.gov/Feature/4314'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1849, 'Hermes Patera', 'SRID=104904;POINT (226.57 18.33)'::geometry, 'SRID=104904;POLYGON ((226.27743530274 18.067016601562, 226.25820922852 18.135681152343, 226.255462646485 18.216705322265124, 226.26507568359813 18.293609619139627, 226.25614929199594 18.331375122069314, 226.26095581055 18.369140624999, 226.28842163086 18.465270996093, 226.35159301758 18.528442382812, 226.44772338867 18.577880859374, 226.48480224609438 18.594360351561626, 226.52462768555 18.6026000976555, 226.57955932617 18.608093261718, 226.68118286133 18.586120605468, 226.70590209961 18.569641113281, 226.74435424805 18.539428710937, 226.78555297852 18.514709472656, 226.83224487305 18.498229980468, 226.86932373046687 18.488616943359126, 226.89404296875 18.4721374511715, 226.90090942383 18.451538085937, 226.90640258789 18.410339355468, 226.91189575195 18.380126953124, 226.92013549805 18.322448730468, 226.90640258789 18.251037597656, 226.87344360352 18.187866210937, 226.82949829102 18.146667480468, 226.79379272461 18.113708496093, 226.77456665039 18.102722167968, 226.72787475586 18.119201660156, 226.68392944336 18.141174316406, 226.63723754883125 18.15490722656175, 226.58779907226562 18.14254760742125, 226.56033325195 18.121948242187, 226.52188110352 18.088989257812, 226.48617553711 18.067016601562, 226.45321655274 18.083496093749, 226.38729858399 18.086242675781, 226.32412719727 18.078002929687, 226.27743530274 18.067016601562))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15690'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1688, 'Olympus Rupes', 'SRID=104904;POINT (226.43548539543502 18.401964175317982)'::geometry, 'SRID=104904;MULTILINESTRING ((227.42951774597168 22.934080123901367, 227.93671226501465 22.65593910217285, 228.34573936462402 22.4268856048584, 228.52571296691895 22.295995712280273, 228.67296028137207 22.099660873413086, 228.96746253967285 22.099660873413086, 229.62190437316895 21.739717483520508, 230.1290988922119 21.477941513061523, 230.35815620422363 21.26524543762207, 230.38258171081543 21.086992263793945, 230.2117748260498 20.55558967590332, 230.71787071228027 19.182798385620117, 230.8653507232666 18.500219345092773, 230.8653507232666 18.058469772338867, 230.8653507232666 17.96030616760254, 230.88171195983887 16.978639602661133, 230.9144344329834 16.635053634643555, 230.73446083068848 16.389638900756836, 230.6690158843994 16.242387771606445, 230.55448722839355 15.980611801147461, 230.45632362365723 15.816999435424805, 230.35815620422363 15.506139755249023, 230.0472927093506 15.457056045532227, 229.83220100402832 15.140348434448242, 229.54010200500488 14.73716926574707, 229.22923851013184 14.442667007446289, 228.86929512023926 14.213613510131836, 228.5420742034912 14.05000114440918, 228.2148494720459 14.148168563842773, 227.8221836090088 14.148168563842773, 227.2168254852295 13.984556198120117, 226.85687828063965 13.968194961547852, 226.49693489074707 14.05000114440918, 226.0879077911377 13.77186393737793, 225.80977058410645 13.755502700805664, 225.55567741394043 13.881429672241211, 225.3911952972412 14.058565139770508, 224.9426326751709 14.73716926574707, 224.76265907287598 14.73716926574707, 224.36999320983887 14.573556900024414, 223.97732734680176 14.802610397338867, 223.29015922546387 15.12983512878418, 222.70116233825684 15.391611099243164, 222.4393825531006 15.40797233581543, 221.93218803405762 15.40797233581543, 221.57224464416504 15.66975212097168, 221.4413547515869 16.09514045715332, 221.3431911468506 16.700498580932617, 221.39227104187012 17.07680320739746, 221.16321754455566 17.404027938842773, 220.89009284973145 17.53165626525879, 220.90144157409668 17.84577751159668, 221.14274787902832 17.76296043395996, 221.52316093444824 17.61672019958496, 221.86674308776855 18.074831008911133, 222.06307792663574 18.614748001098633, 221.8994655609131 18.860166549682617, 221.6376895904541 19.252832412719727, 221.62132835388184 19.59641456604004, 221.7358570098877 20.185415267944336, 221.94854927062988 20.774412155151367, 222.079439163208 21.26524543762207, 222.48846626281738 21.854246139526367, 222.99566078186035 22.508691787719727, 223.43741035461426 22.934080123901367, 223.78099250793457 23.13041114807129, 224.04277229309082 23.064966201782227, 224.3045482635498 22.999521255493164, 224.72993659973145 22.934080123901367, 224.9917163848877 22.88499641418457, 225.2862148284912 22.934080123901367, 225.72796440124512 23.01588249206543, 226.2351589202881 23.146772384643555, 226.61146354675293 23.27766227722168, 227.05321311950684 23.097688674926758, 227.42951774597168 22.934080123901367))'::geometry, '1976-01-01', 'ru', 'http://planetarynames.wr.usgs.gov/Feature/4454'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1847, 'Zeus Patera', 'SRID=104904;POINT (227.07 18.39)'::geometry, 'SRID=104904;POLYGON ((226.50457763673 18.675384521485, 226.51556396485 18.70834350586, 226.55401611329 18.766021728516, 226.6254272461 18.820953369141, 226.71881103516 18.853912353516, 226.82043457032 18.886871337891, 226.91107177735 18.886871337891, 226.99621582032 18.875885009766, 227.03741455079 18.873138427735, 226.99346923829 18.831939697266, 226.97973632813 18.77426147461, 226.99896240235 18.702850341797, 227.06213378907 18.631439208985, 227.15002441407 18.584747314454, 227.23516845704 18.568267822266, 227.30383300781875 18.59024047851625, 227.33404541016 18.628692626954, 227.34503173829 18.658905029297, 227.39721679688 18.587493896485, 227.42742919923 18.494110107422, 227.42193603516 18.408966064454, 227.39996337891 18.315582275391, 227.39172363282 18.227691650391, 227.34228515626 18.123321533204, 227.29559326173 18.018951416016, 227.21319580079 17.942047119141, 227.15551757813 17.903594970704, 227.09783935548 17.876129150391, 227.00170898438 17.845916748047, 226.9330444336 17.840423583985, 226.88635253907 17.840423583985, 226.90832519532 17.876129150391, 226.91381835938 17.925567626954, 226.90283203126 17.972259521485, 226.87536621094 18.021697998047, 226.82318115235 18.062896728516, 226.77923583985 18.098602294922, 226.83691406251 18.156280517579, 226.88360595704 18.233184814454, 226.91107177735 18.315582275391, 226.8890991211 18.40072631836, 226.88085937501 18.474884033204, 226.83142089844 18.507843017579, 226.72430419923 18.546295166016, 226.67761230469 18.584747314454, 226.6254272461 18.614959716797, 226.58972167969 18.617706298829, 226.62817382813 18.645172119141, 226.67761230469 18.650665283204, 226.61993408204 18.661651611329, 226.56500244141 18.64242553711, 226.4935913086 18.653411865235, 226.50457763673 18.675384521485))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15689'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1848, 'Athena Patera', 'SRID=104904;POINT (227.18 18.74)'::geometry, 'SRID=104904;POLYGON ((227.0290374756 18.766021728515, 227.04002380372 18.807220458984, 227.06062316896 18.840179443359, 227.08259582521 18.867645263671, 227.12928771974 18.880004882812, 227.17597961427 18.877258300781, 227.22541809083 18.866271972656, 227.28172302247 18.825073242187, 227.31605529786 18.775634765624, 227.328414917 18.731689453124, 227.33116149903 18.691864013671, 227.30369567872 18.656158447265, 227.2844696045 18.619079589843, 227.23915100099 18.599853515624, 227.18147277833 18.599853515624, 227.10594177247 18.624572753906, 227.05513000489 18.665771484374, 227.02491760255 18.705596923828, 227.0207977295 18.744049072265, 227.0290374756 18.766021728515))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15693'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1850, 'Apollo Patera', 'SRID=104904;POINT (226.45 17.94)'::geometry, 'SRID=104904;POLYGON ((226.28540039064 17.909774780272, 226.27441406252 17.938613891601, 226.26754760744 17.981185913085, 226.27716064455 18.027877807616, 226.30325317385 18.074569702147, 226.35818481447 18.091049194335, 226.40075683596 18.091049194335, 226.46804809572 18.073196411132, 226.52572631838 18.045730590819, 226.56967163088 18.023757934569, 226.63146972658 17.946853637694, 226.63558959963 17.878189086913, 226.62185668947 17.83836364746, 226.61911010744 17.806777954101, 226.59439086916 17.788925170897, 226.52847290041 17.780685424804, 226.45980834963 17.808151245116, 226.40899658205 17.832870483397, 226.37878417971 17.841110229491, 226.33758544924 17.864456176757, 226.30462646486 17.887802124022, 226.28540039064 17.909774780272))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15694'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1851, 'Olympus Paterae', 'SRID=104904;POINT (226.81 18.32)'::geometry, 'SRID=104904;POLYGON ((226.14367675781 18.452911376953, 226.16564941406 18.513336181641, 226.2041015625 18.554534912109, 226.23431396484 18.592987060547, 226.30572509766 18.625946044922, 226.36889648438 18.650665283203, 226.42108154297 18.653411865234, 226.45678710938 18.642425537109, 226.49249267578 18.700103759766, 226.54193115234 18.755035400391, 226.58312988281 18.809967041016, 226.65454101563 18.845672607422, 226.72320556641 18.870391845703, 226.82757568359 18.895111083984, 226.88525390625 18.911590576172, 226.96545410157 18.900604248046, 227.0121459961 18.900604248046, 227.04785156251 18.889617919921, 227.08355712891 18.906097412109, 227.13299560548 18.917083740234, 227.21813964844 18.911590576171, 227.28405761719 18.875885009765, 227.33349609376 18.829193115234, 227.37194824219 18.771514892578, 227.37744140626 18.735809326171, 227.38156127930375 18.711776733397812, 227.3808746337928 18.69255065917931, 227.37469482423 18.675384521484, 227.40216064454 18.620452880859, 227.43237304688 18.571014404296, 227.4515991211 18.496856689453, 227.45709228516 18.441925048828, 227.44885253907 18.38150024414, 227.44061279298 18.323822021484, 227.43237304688 18.277130126953, 227.41589355469 18.202972412109, 227.38018798829 18.120574951171, 227.34448242188 18.05191040039, 227.31701660157 17.999725341796, 227.26757812501 17.950286865234, 227.22088623048 17.911834716796, 227.17419433594 17.870635986328, 227.12475585938 17.848663330078, 227.03686523438 17.821197509765, 226.97918701173 17.801971435546, 226.88580322266 17.815704345703, 226.85009765626 17.790985107421, 226.81439208985 17.769012451171, 226.7484741211 17.741546630859, 226.68530273438 17.733306884765, 226.62762451173 17.738800048828, 226.57543945313 17.736053466796, 226.50128173829 17.72232055664, 226.39416503907 17.758026123046, 226.32550048829 17.78823852539, 226.29803466798 17.823944091796, 226.27056884766 17.843170166015, 226.21289062501 17.89810180664, 226.20465087891 17.966766357421, 226.22937011719 18.035430908203, 226.20465087891 18.084869384765, 226.18267822266 18.13980102539, 226.17169189454 18.18374633789, 226.17993164063 18.20571899414, 226.15795898438 18.252410888671, 226.13873291016 18.318328857421, 226.13049316407 18.389739990234, 226.14367675781 18.452911376953))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15695'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1870, 'Dionysus Patera', 'SRID=104904;POINT (226.77 17.96)'::geometry, 'SRID=104904;POLYGON ((226.53973388672 18.046417236328, 226.564453125 18.082122802735, 226.60015869141 18.11508178711, 226.64410400391 18.134307861328, 226.71826171875 18.117828369141, 226.77868652344 18.09310913086, 226.83361816406 18.043670654297, 226.87756347656 17.988739013672, 226.89129638672 17.936553955078, 226.8720703125 17.870635986328, 226.828125 17.82943725586, 226.7484741211 17.799224853516, 226.68530273438 17.793731689453, 226.64959716797 17.78549194336, 226.61389160156 17.782745361328, 226.63037109375 17.848663330078, 226.63037109375 17.914581298828, 226.62213134766 17.972259521485, 226.58093261719 18.021697998047, 226.53973388672 18.046417236328))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15692'); +INSERT INTO "♂"."テスト" (id, "UAI", "⌖", geom, "t₀", "class", "URL") VALUES(1871, 'Hera Patera', 'SRID=104904;POINT (226.23 18.45)'::geometry, 'SRID=104904;POLYGON ((226.21000671387 18.244171142578, 226.18116760254063 18.30047607421875, 226.17567443848188 18.347167968749623, 226.17155456543125 18.41445922851525, 226.19902038575 18.489990234375377, 226.24021911621563 18.549041748046875, 226.32124328613438 18.602600097655873, 226.37892150879125 18.616333007812376, 226.44209289551 18.61083984375, 226.396774292 18.582000732422, 226.3610687255875 18.55316162109375, 226.31986999512 18.511962890625, 226.2827911377 18.474884033203, 226.27043151856 18.428192138672, 226.24845886231 18.367767333984, 226.24021911621 18.21533203125, 226.21000671387 18.244171142578))'::geometry, '2017-10-16', 'pe', 'http://planetarynames.wr.usgs.gov/Feature/15691'); + +-- TEST GIS DATA FROM OPENSTREETMAP: EARTH, Ancienne Sylvie +--Testcase 14: +CREATE TABLE "♁" ( + geom public.geometry NOT NULL, + osm_type varchar(16) NOT NULL, + osm_id int8 NOT NULL, + ver int2 NOT NULL, + arr _int8 NULL, + t json NULL +); +--Testcase 15: ETC... +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4596087 59.6907755)'::geometry, 'node', 1621246531, 4, NULL, '{"drain":"disperse"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601391 59.6904673)'::geometry, 'node', 1621246620, 24, NULL, '{"access":"yes","addr:housenumber":"20 литВЕ","addr:street":"Садовая улица","architect":"Ж.-Ф. Тома де Томон","barrier":"gate","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6458/","historic":"yes","locked":"no","name":"Ворота памятника Любезным родителям","ref:okn":"781610399040286","start_date":"1807","tourism":"attraction","wikidata":"Q118122048"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617098 59.6910199)'::geometry, 'node', 1632220259, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617672 59.6909141)'::geometry, 'node', 1632220283, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461757 59.6909696)'::geometry, 'node', 1632220292, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614802 59.6907676)'::geometry, 'node', 1632220315, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615866 59.6907823)'::geometry, 'node', 1632220319, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611444 59.6908848)'::geometry, 'node', 1632220350, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611916 59.6908345)'::geometry, 'node', 1632220355, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.46127 59.6907954)'::geometry, 'node', 1632220358, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611342 59.6909402)'::geometry, 'node', 1632220359, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614212 59.6910868)'::geometry, 'node', 1632220364, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611621 59.6909941)'::geometry, 'node', 1632220366, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616766 59.6908145)'::geometry, 'node', 1632220378, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616314 59.691059)'::geometry, 'node', 1632220590, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613148 59.6910721)'::geometry, 'node', 1632220686, 4, NULL, '{"genus":"Quercus","height":"18","leaf_cycle":"deciduous","leaf_type":"broadleaved","natural":"tree"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613385 59.6907988)'::geometry, 'node', 1632497609, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6476/","historic":"yes","historic:start_date":"1794","int_name":"Euterpe","material":"metal","name":"Эвтерпа","name:el":"Εὐτέρπη","name:la":"Euterpē","name:uk":"Евтерпа","name:zh":"欧忒耳佩","note":"Ошибочно подписано «Clio»","ref":"П-61/1","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614438 59.6907856)'::geometry, 'node', 1632497610, 30, NULL, '{"alt_name:el":"Χλωρίς","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1796","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6475/","historic":"yes","historic:start_date":"1796","int_name":"Flore","material":"metal","name":"Флора","name:el":"Φλόρα","name:en":"Flora","ref":"П-62/1","ref:okn":"781610399040456","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461244 59.690833)'::geometry, 'node', 1632497611, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6470/","historic":"yes","historic:start_date":"1795","int_name":"Melpomene","material":"metal","name":"Мельпомена","name:el":"Μελπομένη","name:en":"Melpomene","name:la":"Melpomenē","name:uk":"Мельпомена","name:zh":"墨爾波墨涅","ref":"П-60/1","ref:okn":"781610399040376","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617227 59.6909514)'::geometry, 'node', 1632497612, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6468/","historic":"yes","historic:start_date":"1793","int_name":"Caliope","material":"metal","name":"Калиопа","name:el":"Καλλιόπη","name:la":"Calliopē","name:uk":"Калліопа","name:zh":"卡利俄佩","ref":"П-65/1","start_date":"1798","tourism":"artwork","wikidata":"Q120979306"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615805 59.6907985)'::geometry, 'node', 1632497613, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1795","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6474/","historic":"yes","historic:start_date":"1795","int_name":"Uranie","material":"metal","name":"Урания","name:el":"Οὐρανία","name:la":"Ūrania","ref":"П-63/1","ref:okn":"78161039904044","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616825 59.6908428)'::geometry, 'node', 1632497614, 29, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6469/","historic":"yes","historic:start_date":"1794","material":"metal","name":"Клио","name:el":"Κλειώ","name:la":"Clīō","note":"Подписано «Euterpe»","ref":"П-64/1","ref:okn":"781610399040466","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614541 59.6909278)'::geometry, 'node', 1632497615, 34, NULL, '{"alt_name":"Аполлон Бельведерский","artist_name":"Леохар;модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1782","artwork_type":"statue","description":"Иконография Бельведерского типа. В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"5","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6466/","historic":"yes","historic:start_date":"1782","material":"metal","name":"Аполлон","name:en":"Apollo","name:zh":"阿波罗神像","ref":"П-71/1","ref:okn":"781610399040386","start_date":"1817","tourism":"artwork","wikidata":"Q118122062"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616021 59.6910564)'::geometry, 'node', 1632497616, 26, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1780","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","historic":"yes","historic:start_date":"1780","material":"metal","name":"Венера Каллипиги","ref":"П-67/1","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616651 59.6910293)'::geometry, 'node', 1632497617, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6471/","historic":"yes","historic:start_date":"1793","int_name":"Polymnia","material":"metal","name":"Полигимния","name:el":"Πολύμνια","name:la":"Polyhymnia","name:uk":"Полігімнія","name:zh":"波吕许谟尼亚","ref":"П-66/1","ref:okn":"781610399040726","start_date":"1798","tourism":"artwork","wikidata":"Q121395079"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614666 59.6910732)'::geometry, 'node', 1632497618, 30, NULL, '{"alt_name":"Гермес Флорентийский","artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6467/","historic":"yes","historic:start_date":"1794","int_name":"Hermes","material":"metal","name":"Меркурий","name:en":"Mercury","ref":"П-68/1","ref:okn":"781610399040396","start_date":"1810","tourism":"artwork","wikidata":"Q121395060"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613231 59.6910597)'::geometry, 'node', 1632497619, 30, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1793","artwork_subject:wikidata":"Q104413","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6477/","historic":"yes","historic:start_date":"1793","int_name":"Erato","material":"metal","name":"Эрато","name:el":"Ἐρατώ","name:ka":"ერატო","name:ko":"에라토","name:la":"Eratō","name:uk":"Ерато","name:zh":"厄剌托","ref":"П-69/1","ref:okn":"781610399040476","start_date":"1798","tourism":"artwork","wikidata":"Q121395110"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612077 59.691005)'::geometry, 'node', 1632497620, 31, NULL, '{"artist_name":"модель П.П. Соколов;отливка Э. Гастклу","artwork:start_date":"1794","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6473/","historic":"yes","historic:start_date":"1794","int_name":"Terpsichore","material":"metal","name":"Терпсихора","name:el":"Τερψιχόρη","name:en":"Terpsichore","name:la":"Terpsichore","ref":"П-70/1","ref:okn":"781610399040436","start_date":"1798","tourism":"artwork","wikidata":"Q121395096"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611782 59.690902)'::geometry, 'node', 1632497621, 29, NULL, '{"artist_name":"модель Ф.Г. Гордеев;отливка Э. Гастклу","artwork:start_date":"1792","artwork_type":"statue","description":"В годы ВОВ находилась в захоронении, заново установлена в 1946 г.","height":"4","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6472/","historic":"yes","historic:start_date":"1792","int_name":"Thalie","material":"metal","name":"Талия","name:el":"Θαλία","name:la":"Thalīa","name:uk":"Талія","name:zh":"塔利亚","ref":"П-59/1","start_date":"1798","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612041 59.6907321)'::geometry, 'node', 1632503254, 6, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.462536 59.6908707)'::geometry, 'node', 1652587953, 5, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4619277 59.6908578)'::geometry, 'node', 1652587958, 5, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617256 59.6909215)'::geometry, 'node', 3177639362, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612018 59.6909805)'::geometry, 'node', 3188928044, 4, NULL, '{"colour":"brown","inlet":"grate","manhole":"drain","man_made":"manhole","material":"metal"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613001 59.6906759)'::geometry, 'node', 3218618266, 4, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614144 59.6907882)'::geometry, 'node', 4912277772, 4, NULL, '{"board_type":"history","information":"board","name":"Флора","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615482 59.6907937)'::geometry, 'node', 4912277773, 4, NULL, '{"board_type":"history","information":"board","name":"Урания","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613145 59.6908057)'::geometry, 'node', 4912277774, 4, NULL, '{"board_type":"history","information":"board","name":"Эвтерпа","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616653 59.6908341)'::geometry, 'node', 4912277775, 4, NULL, '{"board_type":"history","information":"board","name":"Клио","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612216 59.6908451)'::geometry, 'node', 4912277776, 4, NULL, '{"board_type":"history","information":"board","name":"Мельпомена","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4611751 59.690919)'::geometry, 'node', 4912277777, 4, NULL, '{"board_type":"history","information":"board","name":"Талия","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4617272 59.6909351)'::geometry, 'node', 4912277778, 4, NULL, '{"board_type":"history","information":"board","name":"Калиопа","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612298 59.691015)'::geometry, 'node', 4912277779, 4, NULL, '{"board_type":"history","information":"board","name":"Терпсихора","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4616819 59.6910157)'::geometry, 'node', 4912277780, 4, NULL, '{"board_type":"history","information":"board","name":"Полигимния","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.461621 59.6910498)'::geometry, 'node', 4912277781, 4, NULL, '{"board_type":"history","information":"board","name":"Венера Каллипиги","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613548 59.6910624)'::geometry, 'node', 4912277782, 4, NULL, '{"board_type":"history","information":"board","name":"Эрато","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4615016 59.6910712)'::geometry, 'node', 4912277783, 4, NULL, '{"board_type":"history","information":"board","name":"Меркурий","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608954 59.6897746)'::geometry, 'node', 5251698420, 25, NULL, '{"access":"permissive","addr:housenumber":"20 литББ","addr:street":"Садовая улица","architect":"Винченцо Бренна","barrier":"gate","description:access":"Ворота можно закрывать и открывать руками","heritage":"2","heritage:website":"https://kgiop.gov.spb.ru/deyatelnost/uchet/list_objects/6459/","historic":"yes","locked":"no","name":"Большие Старосильвийские ворота","ref":"1","ref:okn":"781620399040626","start_date":"1786..1793","tourism":"attraction","website":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","wheelchair":"yes","wikidata":"Q118122050"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460198 59.6905729)'::geometry, 'node', 6758903438, 6, NULL, '{"artist_name":"И.П. Мартос","artwork_type":"sculpture","height":"4","tourism":"artwork"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4625734 59.6908311)'::geometry, 'node', 8331430683, 3, NULL, '{"inlet":"grate","manhole":"drain","man_made":"manhole"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4614743 59.690923)'::geometry, 'node', 8530936200, 1, NULL, '{"board_type":"history","information":"board","name":"Аполлон","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4597619 59.6907527)'::geometry, 'node', 9140565043, 1, NULL, '{"ford":"yes"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4606891 59.6906687)'::geometry, 'node', 9140576937, 3, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4608515 59.6907117)'::geometry, 'node', 9140576938, 4, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4613945 59.6911519)'::geometry, 'node', 9143069530, 5, NULL, '{"drain":"no","source:direction":"survey"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('POINT (30.4615903 59.6911716)'::geometry, 'node', 9143069534, 1, NULL, '{"amenity":"bench","backrest":"yes","material":"wood"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460339 59.6906064)'::geometry, 'node', 9143093777, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4601191 59.6906349)'::geometry, 'node', 9143093778, 1, NULL, '{"manhole":"telecom","man_made":"manhole"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610445 59.6908345)'::geometry, 'node', 9143093802, 4, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4610243 59.6909861)'::geometry, 'node', 9143093804, 3, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.4612126 59.691117)'::geometry, 'node', 9143093806, 4, NULL, '{"drain":"no"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;POINT (30.460445 59.6910504)'::geometry, 'node', 9656736571, 2, NULL, '{"colour":"#4e3a39","description":"Веломаршрут №4","height":"4","information":"guidepost","material":"metal","start_date":"2021-03..2021-10","tourism":"information"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4608056 59.6895935, 30.4608954 59.6897746, 30.4609447 59.6898691, 30.4614541 59.6909278)'::geometry, 'way', 30995960, 42, '{9140727117,5251698420,1518870630,1632497615}', '{"highway":"footway","historic":"yes","name":"Центральная аллея","ref":"VII","source:name":"https://pavlovskmuseum.ru/expert/restoration/62/1779/","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605616 59.6906319, 30.4597619 59.6907527, 30.4596087 59.6907755)'::geometry, 'way', 149099000, 6, '{1621246509,9140565043,1621246531}', '{"intermittent":"yes","source:direction":"isoline","start_date":"1786","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604741 59.6903357, 30.4604598 59.6904575, 30.4604646 59.6905099, 30.4604784 59.6905443, 30.4604933 59.6905665, 30.4605321 59.6905996, 30.4605616 59.6906319)'::geometry, 'way', 149099004, 8, '{1621246503,9140576877,1621246482,1621246465,1621246454,9140576939,1621246509}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601177 59.6905796, 30.4600903 59.6905709, 30.4600721 59.6905605, 30.4600579 59.6905458, 30.4600519 59.6905296, 30.4600545 59.6905133, 30.4600656 59.6904979, 30.4600844 59.6904845, 30.4601095 59.690474, 30.4601391 59.6904673, 30.460169 59.6904648, 30.4601991 59.6904661, 30.4602277 59.6904711, 30.4602498 59.6904787, 30.4602686 59.6904892, 30.4602829 59.6905018, 30.4602918 59.6905174, 30.4602917 59.6905327, 30.4602881 59.6905462, 30.4602793 59.6905579)'::geometry, 'way', 149099028, 5, '{9140576951,9140576902,9140576952,1621246602,1621246607,1621246668,1621246614,1621246615,1621246618,1621246620,1621246630,1621246244,1621246631,1621246224,1621246250,1621246635,1621246647,9140576950,9140576903,9140576949}', '{"barrier":"fence","colour":"green","fence_type":"wood","height":"2"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4603352 59.6911039, 30.460353 59.6910638, 30.4603719 59.6910414, 30.4603979 59.691021, 30.4604807 59.6909761, 30.460577 59.6909284, 30.4606406 59.6908886, 30.460669 59.6908562, 30.460673 59.6908234, 30.4606633 59.6907504, 30.4606582 59.6907286, 30.4606491 59.6907025, 30.4606314 59.690668, 30.460609 59.690636, 30.4605858 59.6906064, 30.4605578 59.6905735, 30.4605362 59.6905385, 30.4605214 59.6905022, 30.4605119 59.6904644, 30.4605095 59.6904098, 30.460512 59.6903499, 30.4605096 59.6903011)'::geometry, 'way', 149099029, 36, '{9140727237,4260007753,9140727241,8650331583,1621246592,1621246588,1621246578,1652603857,9140727240,8650331584,1621246577,9143093738,1621246419,9140576875,1652603906,9140576876,1621246542,8650331586,9140576874,8650331585,1621246403,9140576873,1239612684}', '{"alt_name":"Окружная дорожка","highway":"footway","historic":"yes","name":"Круговая дорожка","start_date":"1789.1793","surface":"fine_gravel","width":"3.5"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610979 59.6907799, 30.4608515 59.6907117)'::geometry, 'way', 149099034, 9, '{1632503255,9140576938}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4629005 59.6913411, 30.4614541 59.6909278)'::geometry, 'way', 150294524, 8, '{1239612692,1632497615}', '{"highway":"footway","historic":"yes","ref":"III","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613148 59.6910721, 30.4613667 59.6910818, 30.4614212 59.6910868, 30.4614766 59.6910869, 30.4615311 59.6910822, 30.4615833 59.6910728, 30.4616314 59.691059, 30.461674 59.6910412, 30.4617098 59.6910199, 30.4617378 59.6909958, 30.461757 59.6909696, 30.4617669 59.6909421, 30.4617672 59.6909141, 30.4617579 59.6908866, 30.4617393 59.6908603, 30.4617119 59.690836, 30.4616766 59.6908145, 30.4616343 59.6907964, 30.4615866 59.6907823, 30.4615347 59.6907726, 30.4614802 59.6907676, 30.4614248 59.6907674, 30.4613703 59.6907721, 30.4613181 59.6907815, 30.46127 59.6907954, 30.4612274 59.6908132, 30.4611916 59.6908345, 30.4611636 59.6908586, 30.4611444 59.6908848, 30.4611345 59.6909123, 30.4611342 59.6909402, 30.4611435 59.6909678, 30.4611621 59.6909941, 30.4611895 59.6910184, 30.4612248 59.6910399, 30.461267 59.6910579, 30.4613148 59.6910721)'::geometry, 'way', 150294525, 6, '{1632220686,9143093824,1632220364,9143093807,1632220588,9143093808,1632220590,9143093809,1632220259,9143093810,1632220292,9143093811,1632220283,9143093812,1632220296,9143093813,1632220378,9143093814,1632220319,9143093815,1632220315,9143093816,1632220323,9143093817,1632220358,9143093818,1632220355,9143093819,1632220350,9143093820,1632220359,9143093821,1632220366,9143093822,1632220374,9143093823,1632220686}', '{"name":"Дубовое кольцо"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.460726 59.6910052, 30.460614 59.6910145, 30.4605241 59.69102, 30.4604597 59.691022, 30.4603979 59.691021)'::geometry, 'way', 150294532, 30, '{1632497615,1632220252,9140727238,9140727242,9140727239,1621246592}', '{"highway":"footway","historic":"yes","name":"луч домика Крик","ref":"X","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605096 59.6903011, 30.4614541 59.6909278)'::geometry, 'way', 150294541, 8, '{1239612684,1632497615}', '{"highway":"footway","historic":"yes","ref":"VIII","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4617339 59.6901702)'::geometry, 'way', 150294547, 9, '{1632497615,1518870645}', '{"highway":"footway","historic":"yes","ref":"VI","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461819 59.6910085, 30.4618473 59.6909863, 30.4618928 59.6909647, 30.461951 59.6909401, 30.4620356 59.6909251, 30.462536 59.6908707)'::geometry, 'way', 152440395, 6, '{1652587944,1652587948,1652587950,9143093800,1652587952,1652587953}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613063 59.6907075, 30.4612631 59.6907161, 30.4612041 59.6907321)'::geometry, 'way', 152442436, 10, '{1652605207,9143204222,1632503254}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4617627 59.6907689, 30.4618218 59.6907946, 30.4618794 59.6908253, 30.4619277 59.6908578)'::geometry, 'way', 152442438, 8, '{1652605205,1652605201,1652605200,1652587958}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4612018 59.6909805, 30.4617256 59.6909215, 30.4625734 59.6908311, 30.4628306 59.6908088)'::geometry, 'way', 311975108, 20, '{3188928044,3177639362,8331430683,7911801321}', '{"layer":"-1","name":"Старосильвийская дождевая канализация","source:direction":"survey","tunnel":"yes","waterway":"drain"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611708 59.6911018, 30.4611289 59.6910829, 30.4610793 59.6910531, 30.4610552 59.6910294, 30.4610432 59.6910153, 30.4610243 59.6909861)'::geometry, 'way', 313051687, 8, '{1632503180,9143069533,9143093805,9143069532,1632503185,9143093804}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061)'::geometry, 'way', 426269715, 5, '{4255746051,4255746033,9140576943,9140576942,9140576941,9140576940,4255746057,4255746007,9140576945,9140576946,9140576944,4255746054,4255745992,4255746051}', '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603979 59.691021, 30.4603224 59.6910067, 30.4602382 59.6909843, 30.4601137 59.6909482, 30.4600256 59.6909178, 30.4599203 59.6908773, 30.4597958 59.6908259, 30.4597422 59.6908088, 30.4596966 59.6907997, 30.4596501 59.6907961, 30.4596189 59.6907966, 30.4595885 59.6908005, 30.4595518 59.6908091, 30.4595101 59.6908241)'::geometry, 'way', 438780267, 20, '{1621246592,1621246561,1622496989,8850590008,1621246248,1621246252,8650331580,8849369897,9140576840,8650331579,9140576841,8650331578,9140576842,1622496957}', '{"highway":"footway","historic":"yes","loc_name":"Спуск у места домика Крик","name":"Криковская дорога","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4625498 59.6908065, 30.4614541 59.6909278)'::geometry, 'way', 750779153, 4, '{1632220250,1632497615}', '{"highway":"footway","historic":"yes","ref":"IV","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4631938 59.6918756)'::geometry, 'way', 750779155, 5, '{1632497615,1195120146}', '{"highway":"footway","historic":"yes","ref":"II","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4606491 59.6907025)'::geometry, 'way', 750779156, 5, '{1632497615,1621246419}', '{"highway":"footway","historic":"yes","ref":"IX","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4625914 59.6924527)'::geometry, 'way', 750779157, 4, '{1632497615,1652587960}', '{"highway":"footway","historic":"yes","ref":"I","start_date":"1789.1791","surface":"fine_gravel","width":"3.5"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611165 59.6918779, 30.46118 59.6916919, 30.4614541 59.6909278)'::geometry, 'way', 750779158, 4, '{9159459639,1239612686,1632497615}', '{"highway":"footway","historic":"yes","ref":"XII","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4596189 59.6907966, 30.4596712 59.6907865, 30.4597275 59.6907729, 30.459757 59.6907607, 30.4597619 59.6907527, 30.4597677 59.6907431, 30.4597919 59.6907269, 30.4598455 59.6907093, 30.459934 59.6906931, 30.4600118 59.6906782, 30.4600467 59.690666, 30.4600681 59.6906484, 30.4600725 59.6906275, 30.4600655 59.6906044, 30.4600295 59.6905552, 30.4600066 59.6905268, 30.4600031 59.690512, 30.4600111 59.6904995, 30.460044 59.6904799, 30.4600789 59.6904629, 30.4601241 59.6904473)'::geometry, 'way', 988944864, 2, '{9140576841,9140565053,9140565052,9140565051,9140565043,9140565050,9140565049,9140565048,9140565047,9140565046,9140565045,9140565044,1621246253,9140565042,1621246302,1621246323,9140576899,9140576892,9143093786,9143093785,1621246340}', '{"highway":"path","surface":"ground"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4607784 59.690696, 30.4606891 59.6906687)'::geometry, 'way', 988944880, 3, '{9140576936,9140576937}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601316 59.6905738, 30.4601383 59.6905745, 30.460144 59.6905725, 30.4601453 59.6905691, 30.4601415 59.6905663, 30.4601348 59.6905656, 30.4601291 59.6905676, 30.4601278 59.6905709, 30.4601316 59.6905738)'::geometry, 'way', 989184163, 1, '{9142788307,9142788306,9142788305,9142788304,9142788303,9142788302,9142788301,9142788300,9142788307}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601637 59.6905695, 30.4601704 59.6905701, 30.4601761 59.6905682, 30.4601774 59.6905648, 30.4601736 59.6905619, 30.4601668 59.6905613, 30.4601612 59.6905632, 30.4601599 59.6905666, 30.4601637 59.6905695)'::geometry, 'way', 989184166, 1, '{9142819031,9142819030,9142819029,9142819028,9142819027,9142819026,9142819025,9142819024,9142819031}', '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4615026 59.6911479, 30.4614481 59.6911519, 30.4613945 59.6911519)'::geometry, 'way', 989211851, 4, '{1652605211,9143069529,9143069530}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603719 59.6910414, 30.4597387 59.6911122)'::geometry, 'way', 989211857, 12, '{8650331583,4260007752}', '{"highway":"path","historic":"yes","name":"луч домика Крик","start_date":"1780.1785"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4603446 59.6911727, 30.4603806 59.6910714, 30.4603967 59.691047, 30.4604235 59.6910376, 30.4604664 59.6910348, 30.4605415 59.6910308)'::geometry, 'way', 989211858, 1, '{9143069609,9143069608,9143069607,9143069606,9143069605,9143069604}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613583 59.6906799, 30.4614025 59.6907746, 30.461428 59.6907726, 30.4614548 59.6907726, 30.4614763 59.6907739)'::geometry, 'way', 989211859, 1, '{9143093728,9143093727,9143093726,9143093725,9143093724}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461314 59.6906832, 30.461361 59.6907794, 30.4613301 59.6907854, 30.4613033 59.6907929, 30.4612845 59.690799, 30.4609841 59.6905973)'::geometry, 'way', 989211860, 1, '{9143093729,9143093730,9143093731,9143093732,9143093734,9143093733}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611484 59.6909364, 30.4611471 59.6909174, 30.4611497 59.6909005, 30.4611578 59.6908836, 30.4611645 59.6908714, 30.4611739 59.6908606, 30.4606917 59.6907283, 30.460681 59.6907283, 30.460677 59.6907337, 30.460685 59.6907601, 30.4606891 59.6907817, 30.4606917 59.6908129, 30.4606944 59.6908426, 30.4606837 59.6908656, 30.4606596 59.6908927, 30.4606247 59.6909184, 30.460563 59.6909523, 30.460453 59.6910064)'::geometry, 'way', 989211861, 1, '{9143093739,9143093740,9143093741,9143093742,9143093743,9143093744,9143093755,9143093737,9143093736,9143093754,9143093753,9143093722,9143093721,9143093720,9143093719,9143093718,9143093717,9143069616}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4605335 59.6903364, 30.4605335 59.6903946, 30.4605308 59.6904501, 30.4605348 59.6904813, 30.4605442 59.6905137, 30.4605576 59.6905394, 30.4605818 59.6905773, 30.4606193 59.6906247, 30.4606408 59.6906545, 30.4606596 59.6906856, 30.4606716 59.6906958, 30.4606958 59.6907039, 30.4611947 59.6908433, 30.4612155 59.6908301, 30.4612369 59.6908166, 30.461253 59.6908098, 30.4609492 59.6906112)'::geometry, 'way', 989211862, 1, '{9143093764,9143093763,9143093762,9143093748,9143093761,9143093760,9143093759,9143093758,9143093757,9143093756,9143093752,9143093751,9143093750,9143093747,9143093746,9143093745,9143093735}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4604919 59.6903357, 30.4604919 59.690398, 30.4604892 59.6904494, 30.4604946 59.690486, 30.4605053 59.6905157, 30.4605161 59.6905387, 30.4605402 59.6905766, 30.4605778 59.690624, 30.4605992 59.6906538, 30.460626 59.6906931, 30.4606368 59.6907255, 30.4606448 59.6907574, 30.4606502 59.6907871, 30.4606542 59.6908196, 30.4606502 59.6908494, 30.4606327 59.6908751, 30.4606059 59.6908927, 30.4605496 59.6909266, 30.4604128 59.6909942)'::geometry, 'way', 989211863, 1, '{9143093776,9143093775,9143093774,9143093773,9143093749,9143093772,9143093771,9143093770,9143093769,9143093768,9143093767,9143093765,9143093766,9143069615,9143069610,9143069614,9143069613,9143069612,9143069611}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619893 59.6908956, 30.4620356 59.6909251)'::geometry, 'way', 989211867, 2, '{1652587955,1652587952}', '{"intermittent":"yes","source:direction":"survey","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4610753 59.6908007, 30.4610979 59.6907799)'::geometry, 'way', 989211868, 4, '{9143093801,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4611491 59.6907553, 30.4610979 59.6907799)'::geometry, 'way', 989211869, 4, '{1632503177,1632503255}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.461012 59.6909572, 30.4610056 59.6909157, 30.4610163 59.6908698, 30.4610445 59.6908345)'::geometry, 'way', 989211870, 4, '{1632503179,9143093803,1632503181,9143093802}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4613456 59.6911475, 30.46131 59.6911438, 30.4612696 59.6911343, 30.4612126 59.691117)'::geometry, 'way', 989211871, 4, '{1652605209,9143069531,1632503237,9143093806}', '{"intermittent":"yes","source:direction":"survey","start_date":"1789.1793","waterway":"ditch"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4614541 59.6909278, 30.4622826 59.6903796)'::geometry, 'way', 991343632, 2, '{1632497615,1518870652}', '{"highway":"footway","historic":"yes","ref":"V","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4620021 59.690877, 30.4617551 59.6909043, 30.4617579 59.690914, 30.4617593 59.6909255, 30.4617606 59.6909377)'::geometry, 'way', 991343633, 1, '{9159456550,9159456549,9159456545,9159456544,9159456543}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4619941 59.6908547, 30.4617471 59.690882, 30.4617392 59.6908714, 30.4617298 59.6908606, 30.4617164 59.6908491)'::geometry, 'way', 991343634, 1, '{9159456552,9159456551,9159456548,9159456547,9159456546}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4602794 59.6911745, 30.4603083 59.6910871)'::geometry, 'way', 991343661, 1, '{9159459675,9159459674}', '{"barrier":"hedge","height":"1.5","leaf_cycle":"deciduous","leaf_type":"broadleaved"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;LINESTRING (30.4601396 59.6918144, 30.4614541 59.6909278)'::geometry, 'way', 1042527594, 11, '{9140727237,1632497615}', '{"highway":"footway","historic":"yes","name":"луч Амфитеатра","ref":"XI","start_date":"1789.1791","surface":"fine_gravel"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4611342 59.6909402, 30.4611345 59.6909123, 30.4611444 59.6908848, 30.4611636 59.6908586, 30.4611916 59.6908345, 30.4612274 59.6908132, 30.46127 59.6907954, 30.4613181 59.6907815, 30.4613703 59.6907721, 30.4614248 59.6907674, 30.4614802 59.6907676, 30.4615347 59.6907726, 30.4615866 59.6907823, 30.4616343 59.6907964, 30.4616766 59.6908145, 30.4617119 59.690836, 30.4617393 59.6908603, 30.4617579 59.6908866, 30.4617672 59.6909141, 30.4617669 59.6909421, 30.461757 59.6909696, 30.4617378 59.6909958, 30.4617098 59.6910199, 30.461674 59.6910412, 30.4616314 59.691059, 30.4615833 59.6910728, 30.4615311 59.6910822, 30.4614766 59.6910869, 30.4614212 59.6910868, 30.4613667 59.6910818, 30.4613148 59.6910721, 30.461267 59.6910579, 30.4612248 59.6910399, 30.4611895 59.6910184, 30.4611621 59.6909941, 30.4611435 59.6909678, 30.4611342 59.6909402)))'::geometry, 'way', 150294525, 6, NULL, '{"name":"Дубовое кольцо"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4604209 59.6905034, 30.460432 59.6903065, 30.4604493 59.6903061, 30.4604387 59.6904982, 30.4604437 59.6905232, 30.460449 59.6905388, 30.4604611 59.6905564, 30.4604745 59.6905713, 30.4605038 59.6906061, 30.4604844 59.6906116, 30.4604557 59.6905794, 30.4604396 59.6905543, 30.4604303 59.6905334, 30.4604209 59.6905034)))'::geometry, 'way', 426269715, 5, NULL, '{"man_made":"embankment","name":"Старосильвийский вал","start_date":"1789.1793"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601278 59.6905709, 30.4601291 59.6905676, 30.4601348 59.6905656, 30.4601415 59.6905663, 30.4601453 59.6905691, 30.460144 59.6905725, 30.4601383 59.6905745, 30.4601316 59.6905738, 30.4601278 59.6905709)))'::geometry, 'way', 989184163, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); +INSERT INTO "♁" (geom, osm_type, osm_id, ver, arr, t) VALUES('SRID=4326;MULTIPOLYGON (((30.4601599 59.6905666, 30.4601612 59.6905632, 30.4601668 59.6905613, 30.4601736 59.6905619, 30.4601774 59.6905648, 30.4601761 59.6905682, 30.4601704 59.6905701, 30.4601637 59.6905695, 30.4601599 59.6905666)))'::geometry, 'way', 989184166, 1, NULL, '{"building:colour":"white","building:part":"yes","height":"6","roof:shape":"flat"}'); + +--Testcase 40: +CREATE FOREIGN TABLE "types_PostGIS"( "i" int OPTIONS (key 'true'), gm geometry, gg geography, r raster, t text, gm1 geometry, gg1 geography) SERVER sqlite_svr; + +--Testcase 41: ERR - raster +INSERT INTO "types_PostGIS" ( "i", gm, gg, r, t ) VALUES (1, decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('0101000020e6100000fd5aa846f9733e406c054d4bacd74d40', 'hex'), decode('1223456890', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); +--Testcase 42: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; +--Testcase 43: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; + +-- Insert SpatiaLite BLOB, read PostGOS/GEOS BLOB +--Testcase 44: OK +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (1, decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), decode('0001e6100000bf72ce99fe763e40ed4960730ed84d40bf72ce99fe763e40ed4960730ed84d407c01000000bf72ce99fe763e40ed4960730ed84d40fe', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii", "natural": "shrub", "genus:ru": "Рододендрон", "taxon:ru": "Рододендрон Ледебура", "source:taxon": "board"}'); +--Testcase 45: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; +--Testcase 46: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; +--Testcase 47: OK +SELECT "i", gm, gg, t FROM "types_PostGIS"; +--Testcase 48: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS"; +--Testcase 49: ERR, no SRID +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); +--Testcase 50: ERR, no SRID +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('POINT (30.4648224 59.687941)'::geometry); +--Testcase 51: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); +--Testcase 52: +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = ('SRID=4326;POINT (30.4648224 59.687941)'::geometry); +--Testcase 53: ERR damaged, but there is SRID +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm, gg, t FROM "types_PostGIS" WHERE gm = (decode('0101000020e6100000bf72ce99fe76', 'hex')::geometry); + +-- Insert PostGIS/GEOS BLOB, read SpatiaLite BLOB +--Testcase 54: OK +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (2, decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); +--Testcase 55: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE bytea; +--Testcase 56: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE bytea; +--Testcase 57: OK +SELECT "i", gm, gg, t FROM "types_PostGIS"; +--Testcase 58: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gm" TYPE geometry; +--Testcase 59: +ALTER FOREIGN TABLE "types_PostGIS" ALTER COLUMN "gg" TYPE geography; +--Testcase 60: ERR damaged geometry, but there is SRID +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (3, decode('0101000020e6100000bf72ce99fe76', 'hex'), NULL, '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); +--Testcase 61: ERR damaged geography, but there is SRID +INSERT INTO "types_PostGIS" ( "i", gm, gg, t ) VALUES (4, NULL, decode('0101000020e6100000bf72ce99fe76', 'hex'), '{"genus": "Rhododendron", "taxon": "Rhododendron ledebourii"}'); + +--Testcase 62: +CREATE FOREIGN TABLE "♂" ( + id int4 OPTIONS (key 'true'), + "UAI" varchar(254), + "⌖" geometry, + geom geometry, + "t₀" date, + "class" text, + "URL" varchar(80) +) SERVER sqlite_svr; + +--Testcase 63: +INSERT INTO "♂" SELECT * FROM "♂"."テスト"; +--Testcase 64: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE bytea; +--Testcase 65: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE bytea; +--Testcase 66: +SELECT * FROM "♂"; +--Testcase 67: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "⌖" TYPE geometry; +--Testcase 68: +ALTER FOREIGN TABLE "♂" ALTER COLUMN "geom" TYPE geometry; +--Testcase 69: +SELECT * FROM "♂"; + +--Testcase 70: +CREATE FOREIGN TABLE "♁ FDW"( + geom geometry NOT NULL, + osm_type varchar(16) OPTIONS (key 'true') NOT NULL , + osm_id bigint OPTIONS (key 'true') NOT NULL, + ver int NOT NULL, + arr text, + t text +) SERVER sqlite_svr OPTIONS (table '♁'); + +--Testcase 71: ERR - No SRID +INSERT INTO "♁ FDW" SELECT * FROM "♁"; +--Testcase 72: OK +SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; +--Testcase 73: +UPDATE "♁" SET geom = ST_SetSRID(geom, 4326); +--Testcase 74: +INSERT INTO "♁ FDW" SELECT * FROM "♁" WHERE ST_SRID(geom) IS NOT NULL; +--Testcase 75: +ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE bytea; +--Testcase 76: +SELECT * FROM "♁ FDW"; +--Testcase 77: +ALTER FOREIGN TABLE "♁ FDW" ALTER COLUMN "geom" TYPE geometry; +--Testcase 78: +SELECT * FROM "♁ FDW"; + +--Testcase 79: +DROP FOREIGN TABLE "♂"; +--Testcase 80: +DROP FOREIGN TABLE "♁ FDW"; +--Testcase 81: +DROP TABLE "♁"; +--Testcase 82: +DROP TABLE "♂"."テスト"; +--Testcase 83: +DROP SCHEMA "♂"; + +-- Test operators implemented in PostGIS 3.4.2, other are not tested +-- SELECT testing group +-- geometry -> geometry + bytea const -> geography -> geography + bytea const +-- TC 100 -> TC 150 -> TC200 -> TC250 +-- WHERE testing group +-- geometry -> geometry + bytea const -> geography -> geography + bytea const +-- TC 300 -> TC 350 -> TC400 -> TC450 + +--Testcase 100: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @@ gm1 g FROM "types_PostGIS"; +--Testcase 101: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm && gm1 g FROM "types_PostGIS"; +--Testcase 102: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm << gm1 g FROM "types_PostGIS"; +--Testcase 103: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm >> gm1 g FROM "types_PostGIS"; +--Testcase 104: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &< gm1 g FROM "types_PostGIS"; +--Testcase 105: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &> gm1 g FROM "types_PostGIS"; +--Testcase 106: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<| gm1 g FROM "types_PostGIS"; +--Testcase 107: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |>> gm1 g FROM "types_PostGIS"; +--Testcase 108: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &<| gm1 g FROM "types_PostGIS"; +--Testcase 109: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |&> gm1 g FROM "types_PostGIS"; +--Testcase 110: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~= gm1 g FROM "types_PostGIS"; +--Testcase 111: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm = gm1 g FROM "types_PostGIS"; +--Testcase 112: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; +--Testcase 113: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &&& gm1 g FROM "types_PostGIS"; +--Testcase 114: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |=| gm1 g FROM "types_PostGIS"; +--Testcase 115 +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <#> gm1 g FROM "types_PostGIS"; +--Testcase 116: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<->> gm1 g FROM "types_PostGIS"; +--Testcase 117: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @ gm1 g FROM "types_PostGIS"; +--Testcase 118: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~ gm1 g FROM "types_PostGIS"; + +--Testcase 150: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 151: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 152: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 153: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 154: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 155: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 156: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 157: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 158: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 159: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 160: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 161: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 162: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 163: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 164: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 165: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 166: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 167: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 168: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 169: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 170: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + +--Testcase 200: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <-> gg1 g FROM "types_PostGIS"; +--Testcase 201: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg && gg1 g FROM "types_PostGIS"; +--Testcase 202: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <> gg1 g FROM "types_PostGIS"; +--Testcase 203: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg = gg1 g FROM "types_PostGIS"; +--Testcase 204 +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg != gg1 g FROM "types_PostGIS"; + +--Testcase 250: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 251: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 252: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; +--Testcase 253: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT "i", gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') g FROM "types_PostGIS"; + +--Testcase 300: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ gm1 IS NOT NULL; +--Testcase 301: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && gm1 IS NOT NULL; +--Testcase 302: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << gm1 IS NOT NULL; +--Testcase 303: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> gm1 IS NOT NULL; +--Testcase 304: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< gm1 IS NOT NULL; +--Testcase 305: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> gm1 IS NOT NULL; +--Testcase 306: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| gm1 IS NOT NULL; +--Testcase 307: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> gm1 IS NOT NULL; +--Testcase 308: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| gm1 IS NOT NULL; +--Testcase 309: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> gm1 IS NOT NULL; +--Testcase 310: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= gm1 IS NOT NULL; +--Testcase 311: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm = gm1 IS NOT NULL; +--Testcase 312: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& gm1 IS NOT NULL; +--Testcase 313: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| gm1 IS NOT NULL; +--Testcase 314: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> gm1 IS NOT NULL; +--Testcase 315: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> gm1 IS NOT NULL; +--Testcase 316: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ gm1 IS NOT NULL; +--Testcase 317: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ gm1 IS NOT NULL; + +--Testcase 350: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @@ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 351: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 352: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 353: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm << decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 354: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm >> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 355: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 356: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &< decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 357: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 358: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 359: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |>> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 360: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 361: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &<| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 362: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |&> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 363: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~= decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 364: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 365: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm &&& decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 366: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm |=| decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 367: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <#> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 368: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm <<->> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 369: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm @ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 370: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gm, gm1 FROM "types_PostGIS" WHERE gm ~ decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + + +--Testcase 400: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> gg1 IS NOT NULL; +--Testcase 401: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && gg1 IS NOT NULL; +--Testcase 402: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; +--Testcase 403: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> gg1 IS NOT NULL; +--Testcase 404: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg = gg1 IS NOT NULL; +--Testcase 405: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != gg1 IS NOT NULL; + +--Testcase 450: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <-> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 451: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg && decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 452: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 453: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg <> decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; +--Testcase 454: +EXPLAIN (VERBOSE, COSTS OFF) +SELECT gg, gg1 FROM "types_PostGIS" WHERE gg != decode('0101000020e6100000bf72ce99fe763e40ed4960730ed84d40', 'hex') IS NOT NULL; + + +--Testcase 500: +DROP FOREIGN TABLE "types_PostGIS"; +--Testcase 501: +DROP EXTENSION sqlite_fdw CASCADE; +--Testcase 502: +DROP EXTENSION postgis CASCADE; diff --git a/sql/17.0/with_gis_support/type.sql b/sql/17.0/with_gis_support/type.sql new file mode 100644 index 00000000..cdad623e --- /dev/null +++ b/sql/17.0/with_gis_support/type.sql @@ -0,0 +1,286 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 47: +CREATE EXTENSION postgis; + +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); + +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; + +--Testcase 16: +SELECT * FROM "type_STRING"; +--Testcase 18: +SELECT * FROM "type_BYTE"; +--Testcase 19: +SELECT * FROM "type_SINT"; +--Testcase 20: +SELECT * FROM "type_BINT"; +--Testcase 21: +SELECT * FROM "type_INTEGER"; +--Testcase 22: +SELECT * FROM "type_FLOAT"; +--Testcase 23: +SELECT * FROM "type_DOUBLE"; +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; +--Testcase 25: +SELECT * FROM "type_BLOB"; +--Testcase 26: +SELECT * FROM typetest; + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); + +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; +--Testcase 57 +DELETE FROM type_JSON; + +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK +--Testcase 65: +DELETE FROM "type_BOOLEAN"; + +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; + +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); + +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; + +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/without_gis_support/auto_import.sql b/sql/17.0/without_gis_support/auto_import.sql new file mode 100644 index 00000000..22df5ceb --- /dev/null +++ b/sql/17.0/without_gis_support/auto_import.sql @@ -0,0 +1,49 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 01: +CREATE EXTENSION sqlite_fdw; +--Testcase 02: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +--Testcase 04: +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 05: +CREATE VIEW ft AS ( +SELECT *, row_number() OVER () n +FROM information_schema.foreign_tables +WHERE foreign_table_catalog = current_database() +AND foreign_table_schema = 'public' +); +--Testcase 06: +SELECT * FROM ft; + +--Testcase 07: +CREATE VIEW fc AS ( +SELECT ft.n, table_name, column_name, ordinal_position tab_no, column_default def, is_nullable "null", data_type, character_maximum_length c_max_len, character_octet_length c_oct_len, numeric_precision num_pr, numeric_precision_radix num_rdx, numeric_scale num_sc, datetime_precision dtp, interval_type it, interval_precision ip, udt_schema, udt_name, maximum_cardinality max_crd, dtd_identifier dtdid, is_self_referencing sref, is_identity ididt, is_generated isgen +FROM information_schema.columns c +INNER JOIN ft +ON (c.table_catalog, c.table_schema, c.table_name) = (ft.foreign_table_catalog, ft.foreign_table_schema, ft.foreign_table_name) +) order by n, tab_no; +--Testcase 08: base metadata +SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, udt_name FROM fc; +--Testcase 09: size/length/presision metadata +SELECT n, table_name, column_name, tab_no, c_max_len, c_oct_len, num_pr, num_rdx, num_sc, dtp FROM fc; +--Testcase 10: other metadata +SELECT n, table_name, column_name, tab_no, it, ip, max_crd, dtdid, sref, ididt, isgen FROM fc; + +--Testcase 11: +SELECT * FROM information_schema.column_options +WHERE (table_catalog, table_schema, table_name) +IN (SELECT foreign_table_catalog, foreign_table_schema, foreign_table_name FROM ft); + +--Testcase 11: +DROP VIEW fc; +--Testcase 12: +DROP VIEW ft; + +--Testcase 20: +SET client_min_messages TO ERROR; +--Testcase 21: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/sql/17.0/types/nogis.sql b/sql/17.0/without_gis_support/nogis.sql similarity index 100% rename from sql/17.0/types/nogis.sql rename to sql/17.0/without_gis_support/nogis.sql diff --git a/sql/17.0/without_gis_support/type.sql b/sql/17.0/without_gis_support/type.sql new file mode 100644 index 00000000..03b56979 --- /dev/null +++ b/sql/17.0/without_gis_support/type.sql @@ -0,0 +1,283 @@ +--SET log_min_messages TO DEBUG1; +--SET client_min_messages TO DEBUG1; +--Testcase 44: +CREATE EXTENSION sqlite_fdw; +--Testcase 45: +CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw +OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); + +IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; + +--Testcase 1: +INSERT INTO "type_STRING"(col) VALUES ('string'); +--Testcase 4: +INSERT INTO "type_BYTE"(col) VALUES ('c'); +--Testcase 5: +INSERT INTO "type_SINT"(col) VALUES (32767); +--Testcase 6: +INSERT INTO "type_SINT"(col) VALUES (-32768); +--Testcase 7: +INSERT INTO "type_BINT"(col) VALUES (9223372036854775807); +--Testcase 8: +INSERT INTO "type_BINT"(col) VALUES (-9223372036854775808); +--Testcase 9: +INSERT INTO "type_INTEGER"(col) VALUES (9223372036854775807); + +--Testcase 10: +INSERT INTO "type_FLOAT"(col) VALUES (3.1415); +--Testcase 11: +INSERT INTO "type_DOUBLE"(col) VALUES (3.14159265); +--Testcase 12: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 12:34:56.789', '2017.11.06'); +--Testcase 13: +INSERT INTO "type_TIMESTAMP" VALUES ('2017.11.06 1:3:0', '2017.11.07'); +--Testcase 14: +INSERT INTO "type_BLOB"(col) VALUES (bytea('\xDEADBEEF')); +--Testcase 15: +INSERT INTO typetest VALUES(1,'a', 'b', 'c','2017.11.06 12:34:56.789', '2017.11.06 12:34:56.789' ) ; + +--Testcase 16: +SELECT * FROM "type_STRING"; +--Testcase 18: +SELECT * FROM "type_BYTE"; +--Testcase 19: +SELECT * FROM "type_SINT"; +--Testcase 20: +SELECT * FROM "type_BINT"; +--Testcase 21: +SELECT * FROM "type_INTEGER"; +--Testcase 22: +SELECT * FROM "type_FLOAT"; +--Testcase 23: +SELECT * FROM "type_DOUBLE"; +set datestyle=ISO; +--Testcase 24: +SELECT * FROM "type_TIMESTAMP"; +--Testcase 25: +SELECT * FROM "type_BLOB"; +--Testcase 26: +SELECT * FROM typetest; + +--Testcase 27: +insert into "type_STRING" values('TYPE'); +--Testcase 28: +insert into "type_STRING" values('type'); + +-- not pushdown +--Testcase 29: +SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +--Testcase 30: +EXPLAIN SELECT *FROM "type_STRING" WHERE col like 'TYP%'; +-- pushdown +--Testcase 31: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; +--Testcase 32: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%'; + +--Testcase 33: +SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; +--Testcase 34: +EXPLAIN SELECT *FROM "type_STRING" WHERE col ilike 'typ%' and col like 'TYPE'; + +--Testcase 35: +SELECT * FROM "type_TIMESTAMP"; + +--Testcase 36: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; +--Testcase 37: +SELECT * FROM "type_TIMESTAMP" WHERE col > date ('2017.11.06 12:34:56.789') ; + +--Testcase 38: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; +--Testcase 39: +SELECT * FROM "type_TIMESTAMP" WHERE col::text > date ('2017.11.06 12:34:56.789')::text ; + +--Testcase 40: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; +--Testcase 41: +SELECT * FROM "type_TIMESTAMP" WHERE col > b - interval '1 hour'; + +--Testcase 42: +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM "type_TIMESTAMP" WHERE col > b; +--Testcase 43: +SELECT * FROM "type_TIMESTAMP" WHERE col > b; + +--Testcase 48: +INSERT INTO "type_DATE"(col) VALUES ('2021.02.23'); +--Testcase 49: +INSERT INTO "type_DATE"(col) VALUES ('2021/03/08'); +--Testcase 50: +INSERT INTO "type_DATE"(col) VALUES ('9999-12-30'); +--Testcase 58: +SELECT * FROM "type_DATE"; + +--Testcase 51: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45'); +--Testcase 52: +INSERT INTO "type_TIME"(col) VALUES ('01:23:45.6789'); +--Testcase 59: +SELECT * FROM "type_TIME"; + +--Testcase 60: +EXPLAIN VERBOSE +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; +--Testcase 61: +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c17, c18, c19, c2, c21, c22, c23, c24 FROM alltypetest; + +--Testcase 53: +CREATE FOREIGN TABLE type_JSON(col JSON OPTIONS (key 'true')) SERVER sqlite_svr OPTIONS (table 'type_TEXT'); +--Testcase 54: +INSERT INTO type_JSON(col) VALUES ('[1, 2, "foo", null]'); +--Testcase 55: +INSERT INTO type_JSON(col) VALUES ('{"bar": "baz", "balance": 7.77, "active": false}'::json); +--Testcase 56 +SELECT * FROM type_JSON; +--Testcase 57 +DELETE FROM type_JSON; + +--Testcase 60: +DROP FOREIGN TABLE IF EXISTS "type_BOOLEAN"; +--Testcase 61: +CREATE FOREIGN TABLE "type_BOOLEAN" (i int, b boolean OPTIONS (key 'true')) SERVER sqlite_svr; +--Testcase 62: +INSERT INTO "type_BOOLEAN" (i, b) VALUES (1, 'on'), (2, false); +--Testcase 63: +ALTER FOREIGN TABLE "type_BOOLEAN" DROP COLUMN i; +--Testcase 64: +SELECT * FROM "type_BOOLEAN"; -- OK +--Testcase 65: +DELETE FROM "type_BOOLEAN"; + +-- define INTEGER as TEXT column +--Testcase 67: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE text; +--Testcase 68: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as bpchar +--Testcase 69: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE char(30); +--Testcase 70: +SELECT * FROM "type_INTEGER"; -- OK +-- define INTEGER as varchar +--Testcase 71: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE varchar(30); +--Testcase 72: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as name +--Testcase 73: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE name; +--Testcase 74: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as json +--Testcase 75: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE json; +--Testcase 76: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as time +--Testcase 77: +DELETE FROM "type_INTEGER"; +--Testcase 78: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; +--Testcase 79: +INSERT INTO "type_INTEGER" VALUES (120506); +--Testcase 80: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE time; +--Testcase 81: +SELECT * FROM "type_INTEGER"; -- OK + +-- define INTEGER as date +--Testcase 82: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE date; +--Testcase 83: +SELECT * FROM "type_INTEGER"; -- OK + +--Testcase 84: +ALTER FOREIGN TABLE "type_INTEGER" ALTER COLUMN col TYPE int; + +--Testcase 85: +INSERT INTO "type_DOUBLE" VALUES (1.3e-5); +--Testcase 86: +SELECT * FROM "type_DOUBLE"; + +-- define DOUBLE as TEXT column +--Testcase 87: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE text; +--Testcase 88: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as bpchar +--Testcase 89: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE char(30); +--Testcase 90: +SELECT * FROM "type_DOUBLE"; -- OK +-- define DOUBLE as varchar +--Testcase 91: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE varchar(30); +--Testcase 92: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as name +--Testcase 93: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE name; +--Testcase 94: +SELECT * FROM "type_DOUBLE"; -- OK + +-- define DOUBLE as json +--Testcase 95: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE json; +--Testcase 96: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 97: +DELETE FROM "type_DOUBLE"; +--Testcase 98: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 99: +INSERT INTO "type_DOUBLE" VALUES (120506.12); + +-- define DOUBLE as time +--Testcase 100: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE time; +--Testcase 101: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 102: +DELETE FROM "type_DOUBLE"; +--Testcase 103: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; +--Testcase 104: +INSERT INTO "type_DOUBLE" VALUES (1999.012); +-- define DOUBLE as date +--Testcase 105: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE date; +--Testcase 106: +SELECT * FROM "type_DOUBLE"; -- OK + +--Testcase 107: +ALTER FOREIGN TABLE "type_DOUBLE" ALTER COLUMN col TYPE float8; + +--Testcase 108: +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 109: ERR primary key +INSERT INTO "type_DOUBLE" VALUES (PI()); +--Testcase 110: +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 111: +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 113: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf +--Testcase 114: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('Infinity'); +--Testcase 115: ERR primary key +INSERT INTO "type_DOUBLE" VALUES ('-Infinity'); +--Testcase 116: +SELECT * FROM "type_DOUBLE"; -- OK, +- Inf + +--Testcase 300: +SET client_min_messages TO ERROR; +--Testcase 301: no details +DROP EXTENSION sqlite_fdw CASCADE; diff --git a/test.sh b/test.sh index f53f3068..98a13c97 100755 --- a/test.sh +++ b/test.sh @@ -1,4 +1,9 @@ #!/bin/bash + +# Usage: +# ./test.sh -- test without GIS support +# ./test.sh ENABLE_GIS -- test with GIS support + testdir='/tmp/sqlite_fdw_test'; rm -rf "$testdir"; mkdir "$testdir"; @@ -15,27 +20,11 @@ fi "$sqlite3" "$testdir/common.db" < sql/init_data/init.sql; "$sqlite3" "$testdir/selectfunc.db" < sql/init_data/init_selectfunc.sql; -while (( "$#" )); do - export "$1"; - shift; -done - -[ "$ENABLE_GIS" == "1" ] && gispref='post' || gispref='no'; -[ "$ENABLE_GIS" == "1" ] && gissuf='ok' || gissuf='no'; - -while (( "$#" )); do - export "$1"; - shift; -done - -[ "$ENABLE_GIS" == "1" ] && gispref='post' || gispref='no'; - -# full test sequence, you can put your own test sequence here -type_tests="types/bitstring types/bool types/float4 types/float8 types/int4 types/int8 types/numeric types/${gispref}gis types/macaddr types/macaddr8 types/out_of_range types/timestamp types/uuid"; -gis_dep_tests="gis_$gissuf/type gis_$gissuf/auto_import"; -export REGRESS="extra/sqlite_fdw_post $type_tests extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $gis_dep_tests"; +# full test sequence, +# you can put your own test sequence here by following example +# undefined REGRESS environment variable will cause full test sequence from Makefile +#export REGRESS="extra/sqlite_fdw_post extra/test2 test3 types/test4 .... "; -make clean $1; -make $1; -make check $1 | tee make_check.out; -export REGRESS=; +make clean $@; +make $@; +make check $@ | tee make_check.out; From 79dabfb93661b57f80cc093aa3e421eecf149a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Fri, 11 Apr 2025 06:49:37 +0300 Subject: [PATCH 6/9] Fix CI SQLite version --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1d63645a..a8c0bb22 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -24,8 +24,8 @@ jobs: test: needs: detect-pgversion env: - SQLITE_VERSION : "3460000" - SQLITE_YEAR: "2024" + SQLITE_VERSION : "3490000" + SQLITE_YEAR: "2025" POSTGIS_VERSION : "3.4.2" HTTP_PROXY: "" HTTPS_PROXY: "" From 9ef9febe8d3208f6617b74c3efda47996bb529df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Fri, 11 Apr 2025 07:24:05 +0300 Subject: [PATCH 7/9] Fix PostGIS tests --- Makefile | 4 ++-- README.md | 8 ++++---- expected/13.15/with_gis_support/auto_import.out | 14 +++++++------- expected/13.15/with_gis_support/type.out | 1 - expected/14.12/with_gis_support/auto_import.out | 14 +++++++------- expected/14.12/with_gis_support/type.out | 1 - expected/15.7/with_gis_support/auto_import.out | 14 +++++++------- expected/15.7/with_gis_support/type.out | 1 - expected/16.3/with_gis_support/auto_import.out | 15 +++++++-------- expected/16.3/with_gis_support/type.out | 1 - expected/17.0/with_gis_support/auto_import.out | 14 +++++++------- expected/17.0/with_gis_support/type.out | 2 -- sql/init_data/init.sql | 8 +------- sqlite_fdw.c | 1 - 14 files changed, 42 insertions(+), 56 deletions(-) diff --git a/Makefile b/Makefile index d4de88eb..cedcf6e3 100644 --- a/Makefile +++ b/Makefile @@ -33,10 +33,10 @@ GIS_DEP_TESTS = $(GIS_DEP_TESTS_DIR)/type $(GIS_DEP_TESTS_DIR)/auto_import $(GIS ifndef REGRESS # System tests, full default sequence -REGRESS = libsqlite extra/sqlite_fdw_post $(DATA_TYPE_TESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GIS_DEP_TESTS) +REGRESS = extra/sqlite_fdw_post $(DATA_TYPE_TESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GIS_DEP_TESTS) endif -# Other encodings also are tested. Client encoding should be UTF-8- +# Other encodings also are tested. Client encoding should be UTF-8. REGRESS_OPTS = --encoding=utf8 UNAME = uname diff --git a/README.md b/README.md index 1eb68ea1..eaa41009 100644 --- a/README.md +++ b/README.md @@ -52,9 +52,9 @@ Features - `json`: `text`(default) or `blob` as SQLite `jsonb` object. - Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) output (`INSERT`/`UPDATE`) for such data types as - `timestamp`: `text`(default) or `int`, - - `uuid`: `text`(36) or `blob`(16)(default), - - `macaddr`: `text`(17) or `blob`(6) or `integer`(default), - - `macaddr8`: `text`(23) or `blob`(8) or `integer`(default). + - `uuid`: `text`(36) or `blob`(16)(default), + - `macaddr`: `text`(17) or `blob`(6) or `integer`(default), + - `macaddr8`: `text`(23) or `blob`(8) or `integer`(default). - Full support for `+Infinity` (means ∞) and `-Infinity` (means -∞) special values for IEEE 754-2008 numbers in `double precision`, `float` and `numeric` columns including such conditions as ` n < '+Infinity'` or ` m > '-Infinity'`. - Bidirectional data transformation for `geometry` and `geography` data types for SpatiaLite ↔ PostGIS. [EWKB](https://libgeos.org/specifications/wkb/#extended-wkb) data transport is used. See [GIS support description](GIS.md). @@ -516,7 +516,7 @@ Once for a foreign datasource you need, as PostgreSQL superuser. Please specify CREATE SERVER sqlite_server FOREIGN DATA WRAPPER sqlite_fdw OPTIONS ( - database '/path/to/database' + database '/path/to/database' ); ``` diff --git a/expected/13.15/with_gis_support/auto_import.out b/expected/13.15/with_gis_support/auto_import.out index 4c399770..95055559 100644 --- a/expected/13.15/with_gis_support/auto_import.out +++ b/expected/13.15/with_gis_support/auto_import.out @@ -142,12 +142,12 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar @@ -232,7 +232,7 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 @@ -240,8 +240,8 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date 55 | ♂ | class | 6 | | YES | text | pg_catalog | text 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar diff --git a/expected/13.15/with_gis_support/type.out b/expected/13.15/with_gis_support/type.out index b2293861..619bb46e 100644 --- a/expected/13.15/with_gis_support/type.out +++ b/expected/13.15/with_gis_support/type.out @@ -7,7 +7,6 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 47: CREATE EXTENSION postgis; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); diff --git a/expected/14.12/with_gis_support/auto_import.out b/expected/14.12/with_gis_support/auto_import.out index 4c399770..95055559 100644 --- a/expected/14.12/with_gis_support/auto_import.out +++ b/expected/14.12/with_gis_support/auto_import.out @@ -142,12 +142,12 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar @@ -232,7 +232,7 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 @@ -240,8 +240,8 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date 55 | ♂ | class | 6 | | YES | text | pg_catalog | text 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar diff --git a/expected/14.12/with_gis_support/type.out b/expected/14.12/with_gis_support/type.out index b2293861..619bb46e 100644 --- a/expected/14.12/with_gis_support/type.out +++ b/expected/14.12/with_gis_support/type.out @@ -7,7 +7,6 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 47: CREATE EXTENSION postgis; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); diff --git a/expected/15.7/with_gis_support/auto_import.out b/expected/15.7/with_gis_support/auto_import.out index 4c399770..95055559 100644 --- a/expected/15.7/with_gis_support/auto_import.out +++ b/expected/15.7/with_gis_support/auto_import.out @@ -142,12 +142,12 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar @@ -232,7 +232,7 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 @@ -240,8 +240,8 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date 55 | ♂ | class | 6 | | YES | text | pg_catalog | text 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar diff --git a/expected/15.7/with_gis_support/type.out b/expected/15.7/with_gis_support/type.out index b2293861..619bb46e 100644 --- a/expected/15.7/with_gis_support/type.out +++ b/expected/15.7/with_gis_support/type.out @@ -7,7 +7,6 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 47: CREATE EXTENSION postgis; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); diff --git a/expected/16.3/with_gis_support/auto_import.out b/expected/16.3/with_gis_support/auto_import.out index 6501e870..95055559 100644 --- a/expected/16.3/with_gis_support/auto_import.out +++ b/expected/16.3/with_gis_support/auto_import.out @@ -142,12 +142,12 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar @@ -199,7 +199,6 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 41 | alltypetest | c22 | 22 | | YES | numeric | pg_catalog | numeric 41 | alltypetest | c23 | 23 | | YES | date | pg_catalog | date 41 | alltypetest | c24 | 24 | | YES | timestamp without time zone | pg_catalog | timestamp - 42 | json_osm_test | wkt | 1 | | YES | text | pg_catalog | text 42 | json_osm_test | osm_type | 2 | | YES | character varying | pg_catalog | varchar 42 | json_osm_test | osm_id | 3 | | YES | bigint | pg_catalog | int8 @@ -233,7 +232,7 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 @@ -241,8 +240,8 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date 55 | ♂ | class | 6 | | YES | text | pg_catalog | text 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar diff --git a/expected/16.3/with_gis_support/type.out b/expected/16.3/with_gis_support/type.out index b2293861..619bb46e 100644 --- a/expected/16.3/with_gis_support/type.out +++ b/expected/16.3/with_gis_support/type.out @@ -7,7 +7,6 @@ CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); --Testcase 47: CREATE EXTENSION postgis; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); diff --git a/expected/17.0/with_gis_support/auto_import.out b/expected/17.0/with_gis_support/auto_import.out index 4c399770..95055559 100644 --- a/expected/17.0/with_gis_support/auto_import.out +++ b/expected/17.0/with_gis_support/auto_import.out @@ -142,12 +142,12 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 33 | type_MACADDR8 | i | 1 | | YES | bigint | pg_catalog | int8 33 | type_MACADDR8 | m | 2 | | YES | macaddr8 | pg_catalog | macaddr8 34 | types_PostGIS | i | 1 | | YES | bigint | pg_catalog | int8 - 34 | types_PostGIS | gm | 2 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg | 3 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm | 2 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg | 3 | | YES | USER-DEFINED | public | geography 34 | types_PostGIS | r | 4 | | YES | numeric | pg_catalog | numeric 34 | types_PostGIS | t | 5 | | YES | text | pg_catalog | text - 34 | types_PostGIS | gm1 | 6 | | YES | bytea | pg_catalog | bytea - 34 | types_PostGIS | gg1 | 7 | | YES | bytea | pg_catalog | bytea + 34 | types_PostGIS | gm1 | 6 | | YES | USER-DEFINED | public | geometry + 34 | types_PostGIS | gg1 | 7 | | YES | USER-DEFINED | public | geography 35 | type_JSON | i | 1 | | YES | bigint | pg_catalog | int8 35 | type_JSON | j | 2 | | YES | json | pg_catalog | json 35 | type_JSON | ot | 3 | | YES | character varying | pg_catalog | varchar @@ -232,7 +232,7 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 53 | type_BOOLEAN_oper | b1 | 3 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | i2 | 4 | | YES | bytea | pg_catalog | bytea 53 | type_BOOLEAN_oper | b2 | 5 | | YES | bytea | pg_catalog | bytea - 54 | ♁ | geom | 1 | | NO | bytea | pg_catalog | bytea + 54 | ♁ | geom | 1 | | NO | USER-DEFINED | public | geometry 54 | ♁ | osm_type | 2 | | NO | character varying | pg_catalog | varchar 54 | ♁ | osm_id | 3 | | NO | bigint | pg_catalog | int8 54 | ♁ | ver | 4 | | NO | bigint | pg_catalog | int8 @@ -240,8 +240,8 @@ SELECT n, table_name, column_name, tab_no, def, "null", data_type, udt_schema, u 54 | ♁ | t | 6 | | YES | jsonb | pg_catalog | jsonb 55 | ♂ | id | 1 | | YES | bigint | pg_catalog | int8 55 | ♂ | UAI | 2 | | YES | character varying | pg_catalog | varchar - 55 | ♂ | ⌖ | 3 | | YES | bytea | pg_catalog | bytea - 55 | ♂ | geom | 4 | | YES | bytea | pg_catalog | bytea + 55 | ♂ | ⌖ | 3 | | YES | USER-DEFINED | public | geometry + 55 | ♂ | geom | 4 | | YES | USER-DEFINED | public | geometry 55 | ♂ | t₀ | 5 | | YES | date | pg_catalog | date 55 | ♂ | class | 6 | | YES | text | pg_catalog | text 55 | ♂ | URL | 7 | | YES | character varying | pg_catalog | varchar diff --git a/expected/17.0/with_gis_support/type.out b/expected/17.0/with_gis_support/type.out index bd9bcc78..619bb46e 100644 --- a/expected/17.0/with_gis_support/type.out +++ b/expected/17.0/with_gis_support/type.out @@ -5,10 +5,8 @@ CREATE EXTENSION sqlite_fdw; --Testcase 45: CREATE SERVER sqlite_svr FOREIGN DATA WRAPPER sqlite_fdw OPTIONS (database '/tmp/sqlite_fdw_test/common.db'); - --Testcase 47: CREATE EXTENSION postgis; - IMPORT FOREIGN SCHEMA main FROM SERVER sqlite_svr INTO public; --Testcase 1: INSERT INTO "type_STRING"(col) VALUES ('string'); diff --git a/sql/init_data/init.sql b/sql/init_data/init.sql index 2ef29391..ff6bb708 100644 --- a/sql/init_data/init.sql +++ b/sql/init_data/init.sql @@ -41,13 +41,7 @@ CREATE TABLE "type_VARBIT" (i int, b bit); CREATE VIEW "type_VARBIT+" AS SELECT *, typeof(b) t, length(b) l FROM "type_VARBIT"; CREATE TABLE "type_UUIDpk" (col uuid primary key); CREATE TABLE "type_UUID" (i int, u uuid); -CREATE VIEW "type_UUID+" AS SELECT - *, - typeof(u) t, - length(u) l - -- blob affinity normalization form for "type_UUID+" view for better visual comparing during uuid test output, will be used later - -- case when typeof(u) = 'blob' then substr(lower(hex(u)),1,8) || '-' || substr(lower(hex(u)),9,4) || '-' || substr(lower(hex(u)),13,4) || '-' || substr(lower(hex(u)),17,4) || '-' || substr(lower(hex(u)),21,12) else null end uuid_blob_canon -FROM "type_UUID"; +CREATE VIEW "type_UUID+" AS SELECT *, typeof("u") t, length("u") l FROM "type_UUID"; CREATE TABLE "type_MACADDRpk" (col macaddr primary key); CREATE TABLE "type_MACADDR" (i int, m macaddr); CREATE VIEW "type_MACADDR+" AS SELECT *, typeof("m") t, length("m") l, cast("m" as text) tx FROM "type_macaddr"; diff --git a/sqlite_fdw.c b/sqlite_fdw.c index 393a22a2..bfa56787 100644 --- a/sqlite_fdw.c +++ b/sqlite_fdw.c @@ -5774,4 +5774,3 @@ conversion_error_callback(void *arg) pfree(err_cont_mess0); } } - From 8147b1cce13c4e1a743471e187c906bb5979da51 Mon Sep 17 00:00:00 2001 From: mkgrgis Date: Fri, 11 Apr 2025 09:12:34 +0300 Subject: [PATCH 8/9] Revertsome merge lines --- Makefile | 2 +- README.md | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index cedcf6e3..e01ed134 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ GIS_DEP_TESTS = $(GIS_DEP_TESTS_DIR)/type $(GIS_DEP_TESTS_DIR)/auto_import $(GIS ifndef REGRESS # System tests, full default sequence -REGRESS = extra/sqlite_fdw_post $(DATA_TYPE_TESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GIS_DEP_TESTS) +REGRESS = libsqlite extra/sqlite_fdw_post $(DATA_TYPE_TESTS) extra/join extra/limit extra/aggregates extra/prepare extra/select_having extra/select extra/insert extra/update extra/encodings sqlite_fdw aggregate selectfunc $(GIS_DEP_TESTS) endif # Other encodings also are tested. Client encoding should be UTF-8. diff --git a/README.md b/README.md index eaa41009..56daf87b 100644 --- a/README.md +++ b/README.md @@ -45,16 +45,16 @@ Features - Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) input and filtering (`SELECT`/`WHERE` usage) for such data types as - `timestamp`: `text` and `int`, - `uuid`: `text`(32..39) and `blob`(16), - - `bool`: `text`(1..5) and `int`, - - `double precision`, `float` and `numeric`: `real` values and special values with `text` affinity (`+Infinity`, `-Infinity`, `NaN`), - - `macaddr`: `text`(12..17) or `blob`(6) or `integer`, - - `macaddr8`: `text`(16..23) or `blob`(8) or `integer`, - - `json`: `text`(default) or `blob` as SQLite `jsonb` object. + - `bool`: `text`(1..5) and `int`, + - `double precision`, `float` and `numeric`: `real` values and special values with `text` affinity (`+Infinity`, `-Infinity`, `NaN`), + - `macaddr`: `text`(12..17) or `blob`(6) or `integer`, + - `macaddr8`: `text`(16..23) or `blob`(8) or `integer`, + - `json`: `text`(default) or `blob` as SQLite `jsonb` object. - Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) output (`INSERT`/`UPDATE`) for such data types as - `timestamp`: `text`(default) or `int`, - - `uuid`: `text`(36) or `blob`(16)(default), - - `macaddr`: `text`(17) or `blob`(6) or `integer`(default), - - `macaddr8`: `text`(23) or `blob`(8) or `integer`(default). + - `uuid`: `text`(36) or `blob`(16)(default), + - `macaddr`: `text`(17) or `blob`(6) or `integer`(default), + - `macaddr8`: `text`(23) or `blob`(8) or `integer`(default). - Full support for `+Infinity` (means ∞) and `-Infinity` (means -∞) special values for IEEE 754-2008 numbers in `double precision`, `float` and `numeric` columns including such conditions as ` n < '+Infinity'` or ` m > '-Infinity'`. - Bidirectional data transformation for `geometry` and `geography` data types for SpatiaLite ↔ PostGIS. [EWKB](https://libgeos.org/specifications/wkb/#extended-wkb) data transport is used. See [GIS support description](GIS.md). @@ -516,7 +516,7 @@ Once for a foreign datasource you need, as PostgreSQL superuser. Please specify CREATE SERVER sqlite_server FOREIGN DATA WRAPPER sqlite_fdw OPTIONS ( - database '/path/to/database' + database '/path/to/database' ); ``` @@ -653,7 +653,7 @@ for `INSERT` and `UPDATE` commands. PostgreSQL supports both `blob` and `text` [ ### JSON support and operators - Operators `->` and `->>` for `json` and `jsonb` are pushed down. This means if you deal with a foreign table only, you can use SQLite syntax of `->` and `->>` operators which is more rich than PostgreSQL syntax. In PostgreSQL this operators means only 1-leveled extraction after one call, but possible multilevel extraction in one call of the operator in SQLite. You can extract `'{"a": 2, "c": [4, 5, {"f": 7}]}' ->'c' -> 2` with result `{"f":7}` both for PostgreSQL and SQLite tables, but `'{"a": 2, "c": [4, 5, {"f": 7}]}' ->'$.c[2]'` possible only in SQLite and for a foreign table. - For PostgreSQL numeric argument of `->` and `->>` operators means only coordinate inside of array. In SQLite transformable to number text argument of this operators also can extract array element. PostgreSQL differs `json -> (2::text)` and `json -> 2`, but SQLite not: `json -> '2'`. -- Please note you can turn off processing of normalizing possible SQLite `jsonb` values with `blob` affinity for a column with formal SQLite `json` data type as option `column_type` = `text`. This can increase `SELECT` or `ORDER` speed, because there will be no normalize function wrapping, but in this case any query will have unsuccessfully result in case of any value with `blob` affiniy including any possible SQLite `jsonb` value. +- Please note you can turn off processing of normalizing possible SQLite `json` values with `text` affinity for a column with formal SQLite `json` data type as option `column_type` = `text`. This can increase `SELECT` or `ORDER` speed, because there will be no normalize function wrapping, but in this case any query will have unsuccessfully result in case of any value with `blob` affiniy including any possible SQLite `jsonb` value. ```sql -- a query with normalization - standard ISO:SQL behaviour EXPLAIN (VERBOSE, COSTS OFF) From 02a7fac1fc33d87deaecb212b60e1c4c5e5249c9 Mon Sep 17 00:00:00 2001 From: mkgrgis Date: Fri, 11 Apr 2025 11:08:36 +0300 Subject: [PATCH 9/9] Fix merge lines --- sql/init_data/init.sql | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/init_data/init.sql b/sql/init_data/init.sql index ff6bb708..2ef29391 100644 --- a/sql/init_data/init.sql +++ b/sql/init_data/init.sql @@ -41,7 +41,13 @@ CREATE TABLE "type_VARBIT" (i int, b bit); CREATE VIEW "type_VARBIT+" AS SELECT *, typeof(b) t, length(b) l FROM "type_VARBIT"; CREATE TABLE "type_UUIDpk" (col uuid primary key); CREATE TABLE "type_UUID" (i int, u uuid); -CREATE VIEW "type_UUID+" AS SELECT *, typeof("u") t, length("u") l FROM "type_UUID"; +CREATE VIEW "type_UUID+" AS SELECT + *, + typeof(u) t, + length(u) l + -- blob affinity normalization form for "type_UUID+" view for better visual comparing during uuid test output, will be used later + -- case when typeof(u) = 'blob' then substr(lower(hex(u)),1,8) || '-' || substr(lower(hex(u)),9,4) || '-' || substr(lower(hex(u)),13,4) || '-' || substr(lower(hex(u)),17,4) || '-' || substr(lower(hex(u)),21,12) else null end uuid_blob_canon +FROM "type_UUID"; CREATE TABLE "type_MACADDRpk" (col macaddr primary key); CREATE TABLE "type_MACADDR" (i int, m macaddr); CREATE VIEW "type_MACADDR+" AS SELECT *, typeof("m") t, length("m") l, cast("m" as text) tx FROM "type_macaddr";